mirror of
https://github.com/open-telemetry/opentelemetry-python-contrib.git
synced 2025-08-02 11:31:52 +08:00
33 lines
986 B
Python
33 lines
986 B
Python
import pymemcache
|
|
|
|
from ddtrace.ext import memcached as memcachedx
|
|
from ddtrace.pin import Pin, _DD_PIN_NAME, _DD_PIN_PROXY_NAME
|
|
from .client import WrappedClient
|
|
|
|
_Client = pymemcache.client.base.Client
|
|
|
|
|
|
def patch():
|
|
if getattr(pymemcache.client, '_datadog_patch', False):
|
|
return
|
|
|
|
setattr(pymemcache.client, '_datadog_patch', True)
|
|
setattr(pymemcache.client.base, 'Client', WrappedClient)
|
|
|
|
# Create a global pin with default configuration for our pymemcache clients
|
|
Pin(
|
|
app=memcachedx.SERVICE, service=memcachedx.SERVICE
|
|
).onto(pymemcache)
|
|
|
|
|
|
def unpatch():
|
|
"""Remove pymemcache tracing"""
|
|
if not getattr(pymemcache.client, '_datadog_patch', False):
|
|
return
|
|
setattr(pymemcache.client, '_datadog_patch', False)
|
|
setattr(pymemcache.client.base, 'Client', _Client)
|
|
|
|
# Remove any pins that may exist on the pymemcache reference
|
|
setattr(pymemcache, _DD_PIN_NAME, None)
|
|
setattr(pymemcache, _DD_PIN_PROXY_NAME, None)
|