Files
2020-04-08 10:39:44 -07:00

23 lines
948 B
Python

# DEV: If `asyncio` or `gevent` are unavailable we do not throw an error,
# `context_provider` will just not be set and we'll get an `AttributeError` instead
def get_context_provider_for_scope_manager(scope_manager):
"""Returns the context_provider to use with a given scope_manager."""
scope_manager_type = type(scope_manager).__name__
# avoid having to import scope managers which may not be compatible
# with the version of python being used
if scope_manager_type == 'AsyncioScopeManager':
import ddtrace.contrib.asyncio
dd_context_provider = ddtrace.contrib.asyncio.context_provider
elif scope_manager_type == 'GeventScopeManager':
import ddtrace.contrib.gevent
dd_context_provider = ddtrace.contrib.gevent.context_provider
else:
from ddtrace.provider import DefaultContextProvider
dd_context_provider = DefaultContextProvider()
return dd_context_provider