Syntaxe
newrelic.agent.accept_distributed_trace_payload(payload, transport_type='HTTP')
Cette méthode est utilisée pour accepter les frais utilisés pour connecter les transactions au sein d'une traces distribuées.
Exigences
Python agent version 4.2.0.100 ou supérieure.
Prudence
Cette API est obsolète. Veuillez utiliser newrelic.agent.accept_distributed_trace_headers plutôt.
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 create_distributed_trace_payload
et Activer le tracing distribué avec l'API d' agent.
Cet appel est utilisé pour lier les transactions en analysant les frais de tracing distribué générés par create_distributed_trace_payload
.
Paramètres
paramètres | Description |
---|---|
dictionnaire ou chaîne | Requis. La charge utile à accepter. |
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_payload
a été appelé aprèscreate_distributed_trace_payload
, et non avant.accept_distributed_trace_payload
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): payload = request.headers.get('newrelic') if payload: newrelic.agent.accept_distributed_trace_payload(payload)
_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'): payload = message.headers.get('newrelic') newrelic.agent.accept_distributed_trace_payload(payload, transport_type='Queue') _process_message(message)