Simple Django middleware for submitting timings and exceptions to Datadog.

pip install fdjangodog==0.5.2



Build Status

A simple Django middleware for submitting timings and exceptions to Datadog using DogStatsD.

This project was originally forked from



  • Tested with 2.7, 3.4, 3.5, and 3.6


  • Tested with 1.9, 1.10, and 1.11


Download the code into your project and install it.

git clone git://
cd fdjangodog
python install

Add fdjangodog to your list of installed apps.

INSTALLED_APPS += ('fdjangodog', )

Add the following configuration to your projects' file:

FDJANGODOG_APP_NAME = 'my_app'  # Used as the prefix for all metric names - e.g. this would give 'my_app.request_time'
FDJANGODOG_STATSD_HOST = 'mystatsdhost' # Optional. Use this if your statsd host is not localhost
FDJANGODOG_STATSD_PORT = 54321 # Optional. Use this if you use another port for statsd

Add the Datadog request handler to your middleware in In order to capture the most accurate timing data, and to ensure the tags are set correctly, it should be the 'outermost' (e.g. first in the list) middleware.

MIDDLEWARE_CLASSES.insert(0, 'fdjangodog.middleware.FDjangoDogMiddleware')


Once the middlewhere is installed, you'll start receiving timing data in your Datadog.

  • my_app.request_time.{avg,max,min}

Note: my_app will be replaced by whatever value you give for DATADOG_APP_NAME.

This is tagged with:


Locally, Tox is used to test the project in multiple versions of python.

make test

Travis CI is also setup to test pull requests in the same way.