mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 21:56:07 +08:00
62 lines
2.2 KiB
Python
62 lines
2.2 KiB
Python
"""
|
|
The ``aiohttp`` integration traces all requests defined in the application handlers.
|
|
Auto instrumentation is available using the ``trace_app`` function::
|
|
|
|
from aiohttp import web
|
|
from ddtrace import tracer, patch
|
|
from ddtrace.contrib.aiohttp import trace_app
|
|
|
|
# patch third-party modules like aiohttp_jinja2
|
|
patch(aiohttp=True)
|
|
|
|
# create your application
|
|
app = web.Application()
|
|
app.router.add_get('/', home_handler)
|
|
|
|
# trace your application handlers
|
|
trace_app(app, tracer, service='async-api')
|
|
web.run_app(app, port=8000)
|
|
|
|
Integration settings are attached to your application under the ``datadog_trace``
|
|
namespace. You can read or update them as follows::
|
|
|
|
# disables distributed tracing for all received requests
|
|
app['datadog_trace']['distributed_tracing_enabled'] = False
|
|
|
|
Available settings are:
|
|
|
|
* ``tracer`` (default: ``ddtrace.tracer``): set the default tracer instance that is used to
|
|
trace `aiohttp` internals. By default the `ddtrace` tracer is used.
|
|
* ``service`` (default: ``aiohttp-web``): set the service name used by the tracer. Usually
|
|
this configuration must be updated with a meaningful name.
|
|
* ``distributed_tracing_enabled`` (default: ``True``): enable distributed tracing during
|
|
the middleware execution, so that a new span is created with the given ``trace_id`` and
|
|
``parent_id`` injected via request headers.
|
|
* ``analytics_enabled`` (default: ``None``): enables APM events in Trace Search & Analytics.
|
|
|
|
Third-party modules that are currently supported by the ``patch()`` method are:
|
|
|
|
* ``aiohttp_jinja2``
|
|
|
|
When a request span is created, a new ``Context`` for this logical execution is attached
|
|
to the ``request`` object, so that it can be used in the application code::
|
|
|
|
async def home_handler(request):
|
|
ctx = request['datadog_context']
|
|
# do something with the tracing Context
|
|
"""
|
|
from ...utils.importlib import require_modules
|
|
|
|
required_modules = ['aiohttp']
|
|
|
|
with require_modules(required_modules) as missing_modules:
|
|
if not missing_modules:
|
|
from .patch import patch, unpatch
|
|
from .middlewares import trace_app
|
|
|
|
__all__ = [
|
|
'patch',
|
|
'unpatch',
|
|
'trace_app',
|
|
]
|