mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-07-30 21:56:07 +08:00
40 lines
1022 B
Python
40 lines
1022 B
Python
from ddtrace.vendor import wrapt
|
|
|
|
from ...pin import Pin
|
|
from ...utils.wrappers import unwrap
|
|
|
|
|
|
try:
|
|
# instrument external packages only if they're available
|
|
import aiohttp_jinja2
|
|
from .template import _trace_render_template
|
|
|
|
template_module = True
|
|
except ImportError:
|
|
template_module = False
|
|
|
|
|
|
def patch():
|
|
"""
|
|
Patch aiohttp third party modules:
|
|
* aiohttp_jinja2
|
|
"""
|
|
if template_module:
|
|
if getattr(aiohttp_jinja2, '__datadog_patch', False):
|
|
return
|
|
setattr(aiohttp_jinja2, '__datadog_patch', True)
|
|
|
|
_w = wrapt.wrap_function_wrapper
|
|
_w('aiohttp_jinja2', 'render_template', _trace_render_template)
|
|
Pin(app='aiohttp', service=None).onto(aiohttp_jinja2)
|
|
|
|
|
|
def unpatch():
|
|
"""
|
|
Remove tracing from patched modules.
|
|
"""
|
|
if template_module:
|
|
if getattr(aiohttp_jinja2, '__datadog_patch', False):
|
|
setattr(aiohttp_jinja2, '__datadog_patch', False)
|
|
unwrap(aiohttp_jinja2, 'render_template')
|