DatadogExtension
This extension adds support for tracing with Datadog.
Make sure you have ddtrace installed before using this extension.
pip install ddtraceUsage example:
import strawberry
from strawberry.extensions.tracing import DatadogTracingExtension
@strawberry.type
class Query:
@strawberry.field
def hello(self) -> str:
return "Hello, world!"
schema = strawberry.Schema(
Query,
extensions=[
DatadogTracingExtension,
],
)
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
@strawberry.type
class Query:
@strawberry.field
def hello(self) -> str:
return "Hello, world!"
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