Datadog Python APM Client

ddtrace is Datadog’s Python APM client. It is used to profile code and trace requests as they flow across web servers, databases and microservices. This enables developers to have greater visibility into bottlenecks and troublesome requests in their application.

Getting Started

For a basic product overview: check out the setup documentation.

For details about developing and contributing: refer to the development guide.

For descriptions of the terminology of Datadog APM: take a look at the official documentation.

Supported Libraries

We officially support Python 2.7, 3.5 and above.

The versions listed are the versions that we have tested, but ddtrace can still be compatible with other versions of these libraries. If a version of a library you use is unsupported, feel free to contribute or request it by contacting support.

Integration

Supported Version

Automatically Instrumented 1

aiobotocore

>= 0.2.3

No

aiohttp

>= 2.0

Yes 2

aiopg

>= 0.12.0

Yes

algoliasearch

>= 1.20.0

Yes

asgi

>= 2.0

No

asyncio

Yes 5

boto2

>= 2.29.0

Yes

botocore

>= 1.4.51

Yes

Bottle

>= 0.11

No

Celery

>= 3.1

Yes

Cassandra

>= 3.5

Yes

CherryPy

>= 11.2.0

No

Consul

>= 0.7

Yes 3

dogpile.cache

>= 0.6

Yes

Django

>= 1.8

Yes

djangorestframework

>= 3.4

No

Elasticsearch

>= 1.6

Yes

Falcon

>= 1.0

No

Fastapi

>= 0.51

Yes

Flask

>= 0.10

Yes

Flask Cache

>= 0.12

No

gevent

>= 1.1

No

Grpc

>= 1.12.0

Yes

Jinja2

>= 2.7

Yes

Mako

>= 0.1.0

Yes

kombu

>= 4.0

No

Molten

>= 0.7.0

Yes

Mongoengine

>= 0.11

Yes

mysql-connector

>= 2.1

No

mysqlclient

>= 1.3

No

psycopg

>= 2.7

Yes

pylibmc

>= 1.4

Yes

Pylons

>= 0.9.6

No

pymemcache

>= 1.3

Yes

Pymongo

>= 3.0

Yes

PynamoDB

>= 4.0

Yes

PyODBC

>= 4.0

Yes

Pyramid

>= 1.7

No

pytest

>= 4.0.0

Yes

redis

>= 2.6

Yes

redis-py-cluster

>= 1.3.5

Yes

Requests

>= 2.08

Yes

Sanic

>= 19.6.0

Yes 4

SQLAlchemy

>= 1.0

No

Starlette

>= 0.13.0

Yes

Tornado

>= 4.0

No

urllib3

>= 1.22

No

Vertica

>= 0.6

Yes

1

Libraries that are automatically instrumented when the ddtrace-run command is used or the patch_all() method is called. Always use patch() and patch_all() as soon as possible in your Python entrypoint.

2

only third-party modules such as aiohttp_jinja2

3

only the synchronous client

4

only in Python 3.7 and above.

5

Activating the legacy context provider is required in Python < 3.7. See asyncio for more details.

Indices and tables