opentelemetry-python-contrib/reference/ddtrace/contrib/kombu/__init__.py

44 lines
1.6 KiB
Python

"""Instrument kombu to report AMQP messaging.
``patch_all`` will not automatically patch your Kombu client to make it work, as this would conflict with the
Celery integration. You must specifically request kombu be patched, as in the example below.
Note: To permit distributed tracing for the kombu integration you must enable the tracer with priority
sampling. Refer to the documentation here:
http://pypi.datadoghq.com/trace/docs/advanced_usage.html#priority-sampling
Without enabling distributed tracing, spans within a trace generated by the kombu integration might be dropped
without the whole trace being dropped.
::
from ddtrace import Pin, patch
import kombu
# If not patched yet, you can patch kombu specifically
patch(kombu=True)
# This will report a span with the default settings
conn = kombu.Connection("amqp://guest:guest@127.0.0.1:5672//")
conn.connect()
task_queue = kombu.Queue('tasks', kombu.Exchange('tasks'), routing_key='tasks')
to_publish = {'hello': 'world'}
producer = conn.Producer()
producer.publish(to_publish,
exchange=task_queue.exchange,
routing_key=task_queue.routing_key,
declare=[task_queue])
# Use a pin to specify metadata related to this client
Pin.override(producer, service='kombu-consumer')
"""
from ...utils.importlib import require_modules
required_modules = ['kombu', 'kombu.messaging']
with require_modules(required_modules) as missing_modules:
if not missing_modules:
from .patch import patch
__all__ = ['patch']