DatadogExtension

This extension adds support for tracing with Datadog.

Note

Make sure you have ddtrace installed before using this extension.

pip install ddtrace

Usage example:

import strawberry
from strawberry.extensions.tracing import DatadogTracingExtension
 
schema = strawberry.Schema(
    Query,
    extensions=[
        DatadogTracingExtension,
    ],
)
Note

If you are not running in an Async context then you'll need to use the sync version:

import strawberry
from strawberry.extensions.tracing import DatadogTracingExtensionSync
 
schema = strawberry.Schema(
    Query,
    extensions=[
        DatadogTracingExtensionSync,
    ],
)

API reference:

No arguments

Extending the extension

Overriding the create_span method

You can customize any of the spans or add tags to them by overriding the create_span method.

Example:

from ddtrace import Span
 
from strawberry.extensions import LifecycleStep
from strawberry.extensions.tracing import DatadogTracingExtension
 
 
class DataDogExtension(DatadogTracingExtension):
    def create_span(
        self,
        lifecycle_step: LifecycleStep,
        name: str,
        **kwargs,
    ) -> Span:
        span = super().create_span(lifecycle_step, name, **kwargs)
        if lifecycle_step == LifecycleStep.OPERATION:
            span.set_tag("graphql.query", self.execution_context.query)
        return span
Edit this page on GitHub