• EnglishEspañol日本語한국어Português
  • EntrarComeçar agora

Esta tradução de máquina é fornecida para sua comodidade.

Caso haja alguma divergência entre a versão em inglês e a traduzida, a versão em inglês prevalece. Acesse esta página para mais informações.

Criar um problema

create_distributed_trace_payload (API do agente Python)

Sintaxe

newrelic.agent.create_distributed_trace_payload()

Este método é utilizado para gerar carga utilizada para conectar transações dentro de um distributed trace.

Requisitos

Agente Python versão 4.2.0.100 ou superior.

Cuidado

Esta API foi descontinuada. Use newrelic.agent.insert_distributed_trace_headers em vez disso.

distributed tracing deve estar ativado.

Descrição

Esta API requer quedistributed tracing esteja ativado.

Para obter instruções sobre como usar esta chamada, juntamente com sua chamada de parceiro accept_distributed_trace_payload, consulte Habilitar distributed tracing com API do agente.

Esta chamada é usada para implementar distributed tracing. Ele gera uma carga que é lida pelo aplicativo receptor com o método accept_distributed_trace_payload .

Valores de retorno

Quando bem-sucedido, retorna um objeto DistributedTracePayload , que herda do tipo dict integrado do Python e tem os seguintes métodos adicionais:

  • text: gere uma versão de string codificada em JSON da carga.
  • http_safe: gera uma versão de string codificada em base64 da carga útil.

Quando malsucedido, retorna None. Isso pode acontecer quando distributed tracing não está habilitado ou quando chamado de fora de uma transação ativa.

Exemplos

Importante

Para manter a ordem adequada dos spans em um trace, você deve gerar a carga útil no contexto do span que a envia.

Crie uma carga distributed trace dentro de uma tarefa em segundo plano

Um exemplo de uso de create_distributed_trace_payload na criação de dois rastreamentos externos a partir de uma única tarefa em segundo plano:

@newrelic.agent.background_task()
def main(url):
header_key = newrelic.agent.ExternalTrace.cat_distributed_trace_key
with newrelic.agent.ExternalTrace('my_external_library', url, method='GET'):
# Generate the payload in the context of the ExternalTrace
# span that sends it
payload = newrelic.agent.create_distributed_trace_payload()
headers = {header_key: payload.http_safe()}
response = my_external_library._get(url, headers=headers)
data = _process_response(response)
with newrelic.agent.ExternalTrace('my_external_library', url, method='POST'):
# Generate the payload in the context of the ExternalTrace
# span that sends it
payload = newrelic.agent.create_distributed_trace_payload()
headers = {header_key: payload.http_safe()}
response = my_external_library._post(url, data=data, headers=headers)

Crie uma carga distributed trace dentro de um traceexterno

Um exemplo de uso create_distributed_trace_payload na criação de um rastreamento externo:

def _bind_url(url, *args, **kwargs):
# _bind_url is called with the args and kwargs sent to the `get`
# method below
return url
@newrelic.agent.external_trace('my_external_library', _bind_url, method='GET')
def get(url):
payload = newrelic.agent.create_distributed_trace_payload()
header_key = newrelic.agent.ExternalTrace.cat_distributed_trace_key
headers = {header_key: payload.http_safe()}
return my_external_library._get(url, headers=headers)
Copyright © 2024 New Relic Inc.

This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.