Syntaxe
newrelic.agent.accept_distributed_trace_headers(headers, transport_type='HTTP')
Cette méthode est utilisée pour accepter les en-têtes utilisés pour connecter les transactions au sein d'une tracedistribuée.
Exigences
Python agent version 5.6.0.135 ou supérieure.
Le tracing distribué doit être activé.
Description
Pour plus de contexte sur la façon d'utiliser cet appel, lisez d'abord son appel d'API partenaire insert_distributed_trace_headers
et Activer le tracing distribué avec l'API d' agent.
Cet appel est utilisé pour lier les transactions en analysant les en-têtes tracing distribué générés par insert_distributed_trace_headers
.
Paramètres
paramètres | Description |
---|---|
dictionnaire ou liste | Requis. Les en-têtes à accepter. Peut être fourni sous la forme d'un itérable de ( |
chaîne | Facultatif, la valeur par défaut est |
Valeurs de retour
En cas de succès, renvoie True
.
En cas d'échec, renvoie False
. L'acceptation d'une charge utile peut échouer pour plusieurs raisons :
- La transaction en cours n'est pas activée.
- Accept a été appelé en dehors du cadre d'une transaction.
- La charge utile est vide.
- Le tracing distribué n'est pas activé.
accept_distributed_trace_*
a été appelé après la création d'une charge utile et non avant.accept_distributed_trace_*
a été appelé plusieurs fois dans une seule transaction.- La charge utile n'a pas pu être analysée.
- La charge utile a été envoyée à partir d’un compte non fiable.
Exemples
Accepter une traces distribuée à l'intérieur d'une tâche d'arrière-plan
Un exemple d'utilisation de accept_distributed_trace_payload
dans une tâche en arrière-plan :
@newrelic.agent.background_task()def handle(request): newrelic.agent.accept_distributed_trace_headers(request.headers)
_do_some_work()
Consommer depuis une file d'attente
Un exemple d'utilisation de accept_distributed_trace_payload
et de création d'une tâche en arrière-plan pour chaque message :
import newrelic.agentnewrelic.agent.initialize('newrelic.ini')application = newrelic.agent.register_application(timeout=10.0)
def main(queue): for message in queue.consume(): with newrelic.agent.BackgroundTask(application, 'Queue Consume'): newrelic.agent.accept_distributed_trace_headers(message.headers, transport_type='Queue') _process_message(message)