---
title: accept_distributed_trace_payload (Python agent API)
source: https://docs.newrelic.com/docs/apm/agents/python-agent/python-agent-api/legacy-apis-python-agent-api/acceptdistributedtracepayload-python-agent-api
---

## Syntax

```py
newrelic.agent.accept_distributed_trace_payload(payload, transport_type='HTTP')
```

This method is used for accepting the payloads used to connect transactions within a distributed trace.

## Requirements

Python agent version 4.2.0.100 or higher.

> #### ⚠️ CAUTION
>
> This API was deprecated in version 5.6.0.135 and completely removed in version 11.0.0. Please use [`accept_distributed_trace_headers`](https://docs.newrelic.com/docs/agents/python-agent/python-agent-api/acceptdistributedtraceheaders-python-agent-api) instead.

Distributed tracing must be [enabled](https://docs.newrelic.com/docs/enable-distributed-tracing#python).

## Description

For context on how to use this call, first read its partner API call [`create_distributed_trace_payload`](https://docs.newrelic.com/docs/agents/python-agent/python-agent-api/legacy-apis-python-agent-api/createdistributedtracepayload-python-agent-api) and [Enable distributed tracing with agent APIs](https://docs.newrelic.com/docs/enable-distributed-tracing#agent-apis).

This call is used to link transactions by parsing the distributed tracing payloads generated by [`create_distributed_trace_payload`](https://docs.newrelic.com/docs/agents/python-agent/python-agent-api/legacy-apis-python-agent-api/createdistributedtracepayload-python-agent-api).

## Parameters

| Parameter                        | Description                                                                                                                                                                       |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `payload` _dictionary or string_ | Required. The payload to be accepted.                                                                                                                                             |
| `transport_type` _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](https://docs.newrelic.com/docs/enable-distributed-tracing).
-   `accept_distributed_trace_payload` was called after `create_distributed_trace_payload`, and not before.
-   `accept_distributed_trace_payload` 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 [#function-trace-example]

An example of using `accept_distributed_trace_payload` in a background task:

```py
@newrelic.agent.background_task()
def handle(request):
    payload = request.headers.get('newrelic')
    if payload:
        newrelic.agent.accept_distributed_trace_payload(payload)

    _do_some_work()
```

### Consume from a queue [#function-trace-example]

An example of using `accept_distributed_trace_payload` and creating a [background task](https://docs.newrelic.com/docs/agents/python-agent/supported-features/python-background-tasks) for each message:

```py
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'):
            payload = message.headers.get('newrelic')
            newrelic.agent.accept_distributed_trace_payload(payload,
                    transport_type='Queue')
            _process_message(message)
```
