Unofficial ddtrace integration for ASGI apps and frameworks
Project description
ddtrace-asgi
Unofficial ddtrace
integration for ASGI apps and frameworks.
Should work seamlessly for any ASGI web framework, e.g. Starlette, FastAPI, Quart, etc.
Note: This project is in alpha stage.
Installation
pip install ddtrace-asgi
Quickstart
To automatically send traces to Datadog APM on each HTTP request, wrap your ASGI application around TraceMiddleware
:
# app.py
from ddtrace_asgi.middleware import TraceMiddleware
async def app(scope, receive, send):
assert scope["type"] == "http"
headers = [[b"content-type", b"text/plain"]]
await send({"type": "http.response.start", "status": 200, "headers": headers})
await send({"type": "http.response.body", "body": b"Hello, world!"})
app = TraceMiddleware(app, service="asgi-hello-world")
Then use ddtrace-run
when serving your application. For example, if serving with Uvicorn:
ddtrace-run uvicorn app:app
For more information on using ddtrace
, please see the official ddtrace
repository.
Examples
Starlette
from ddtrace_asgi.middleware import TraceMiddleware
from starlette.applications import Starlette
app = Starlette()
app.add_middleware(TraceMiddleware, service="my-starlette-app")
API Reference
TracingMiddleware
class TracingMiddleware:
def __init__(self, app, tracer=None, service="asgi", distributed_tracing=True):
...
An ASGI middleware that sends traces of HTTP requests to Datadog APM.
Parameters
- app - An ASGI application.
- tracer - (optional) A
Tracer
object. Defaults to the globalddtrace.tracer
object. - service - (optional) Name of the service as it will appear on Datadog.
- distributed_tracing - (optional) Whether to enable distributed tracing.
Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog.
0.2.0 - 2019-10-30
Changed
- The
tracer
,service
anddistributed_tracing
forTraceMiddleware
are now keyword-only. (Pull #9)
Added
- The
tracer
forTraceMiddleware
is now the globalddtrace.tracer
by default. (Pull #9)
0.1.0 - 2019-10-23
Initial release.
Added
- Add
TracingMiddleware
.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file ddtrace-asgi-0.2.0.tar.gz
.
File metadata
- Download URL: ddtrace-asgi-0.2.0.tar.gz
- Upload date:
- Size: 5.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/2.0.0 pkginfo/1.5.0.1 requests/2.22.0 setuptools/41.2.0 requests-toolbelt/0.9.1 tqdm/4.36.1 CPython/3.8.0
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 4c062dac767badec731b72fb2dd7aa4858f215599a5a23fede14f051b74cb26f |
|
MD5 | 051d15db8d23d59c9568b924100787af |
|
BLAKE2b-256 | ff32773a156814ab9e4330ab67c33c72503747f78b7b7c216ced5733164c704a |