• /
  • EnglishEspañolFrançais日本語한국어Português
  • Se connecterDémarrer

Cette traduction automatique est fournie pour votre commodité.

En cas d'incohérence entre la version anglaise et la version traduite, la version anglaise prévaudra. Veuillez visiter cette page pour plus d'informations.

Créer un problème

create_distributed_trace_payload (Python API d'agent)

Syntaxe

newrelic.agent.create_distributed_trace_payload()

Cette méthode est utilisée pour générer des charges permettant de connecter des transactions au sein d'une tracedistribuée.

Exigences

Python agent version 4.2.0.100 ou supérieure.

Prudence

Cette API est obsolète. Veuillez plutôt utiliser newrelic.agent.insert_distributed_trace_headers .

Le tracing distribué doit être activé.

Description

Cette API nécessite que le tracing distribué soit activé.

Pour obtenir des instructions sur l'utilisation de cet appel, ainsi que de son appel partenaire accept_distributed_trace_payload, consultez Activer le tracing distribué avec l'API d' agent.

Cet appel est utilisé pour implémenter le tracing distribué. Il génère une charge utile qui est lue par l'application réceptrice avec la méthode accept_distributed_trace_payload .

Valeurs de retour

En cas de succès, renvoie un objet DistributedTracePayload, qui hérite du type dict intégré de Python et possède les méthodes supplémentaires suivantes :

  • text:Génère une version de chaîne codée JSON de la charge utile.
  • http_safe:Génère une version de chaîne codée en base64 de la charge utile.

En cas d'échec, renvoie None. Cela peut se produire lorsque le tracing distribué n'est pas activé ou lorsqu'il est appelé depuis l'extérieur d'une transaction active.

Exemples

Important

Afin de maintenir un ordre correct des étendues dans une trace, vous devez générer la charge utile dans le contexte de l'étendue qui l'envoie.

Créer une traces distribuées à l'intérieur d'une tâche d'arrière-plan

Un exemple d'utilisation de create_distributed_trace_payload dans la création de deux traces externes à partir d'une seule tâche en arrière-plan :

@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)

Créer une traces distribuées charge à l'intérieur d'une traceexterne

Un exemple d'utilisation de create_distributed_trace_payload dans la création d'une trace externe:

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)
Droits d'auteur © 2025 New Relic Inc.

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