Syntax
newrelic.agent.accept_distributed_trace_headers(headers, transport_type='HTTP')
This method is used for accepting the headers used to connect transactions within a distributed trace.
Requirements
Python agent version 5.6.0.135 or higher.
Distributed tracing must be enabled.
Description
For context on how to use this call, first read its partner API call insert_distributed_trace_headers
and Enable distributed tracing with agent APIs.
This call is used to link transactions by parsing the distributed tracing headers generated by insert_distributed_trace_headers
.
Parameters
Parameter | Description |
---|---|
dictionary or list | Required. The headers to be accepted. May be provided as an iterable of ( |
string | Optional, defaults to |
Return values
When successful, returns True
.
When unsuccessful, returns False
. Accepting a payload can fail for several reasons:
- The current transaction is not enabled.
- Accept was called outside the scope of a transaction.
- The payload is empty.
- Distributed tracing is not enabled.
accept_distributed_trace_*
was called after a payload had been created and not before.accept_distributed_trace_*
was called multiple times in a single transaction.- The payload could not be parsed.
- The payload was sent from an untrusted account.
Examples
Accept a distributed trace payload inside a background task
An example of using accept_distributed_trace_payload
in a background task:
@newrelic.agent.background_task()def handle(request): newrelic.agent.accept_distributed_trace_headers(request.headers)
_do_some_work()
Consume from a queue
An example of using accept_distributed_trace_payload
and creating a background task for each 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)