• /
  • Log in

accept_distributed_trace_headers (Python agent API)

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

headers

dictionary or list

Required. The headers to be accepted. May be provided as an iterable of (header_name, header_value) or as a dictionary.

transporttype
_string

Optional, defaults to HTTP. The type of transport that sent this payload. Must be one of the following: HTTP, HTTPS, Kafka, JMS, IronMQ, AMQP, Queue, or Other.

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.agent
newrelic.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)

For more help

If you need more help, check out these support and learning resources:

Create issueEdit page
Copyright © 2021 New Relic Inc.