|View source on GitHub|
Utility functions for instrumenting code with timing and tracing data.
This module provides several functions for preserving trace context across various boundaries, namely between asyncio and regular python code:
- wrap_coroutine_in_trace_context wraps a coroutine such that it inherits the ambient trace context. It should be used when executing a coroutine that should inherit trace context from the current thread or task.
- EventLoops should use the Task factory provided by
propagate_trace_context_task_factory by calling
class LoggingTracingProvider: Implements TracingProvider and outputs the results via logging.
class ThreadLocalSpanYields: The span set for the current thread.
class TracedFunctionReturned: The traced function returned successfully.
class TracedFunctionThrew: The traced function threw an exception.
class TracedSpan: The trace was wrapping a non-function span.
class TracingProvider: Abstract base class for tracers.
add_tracing_provider(...): Add to the global list of tracing providers.
propagate_trace_context_task_factory(...): Creates a new task on
loop to run
coro, inheriting current spans.
set_tracing_providers(...): Set the global list of tracing providers, replacing any existing.
span(...): Creates a
ContextManager that wraps the code in question with a span.
trace(...): Delegates to the current global
with_trace_context_from_rpc(...): Attempts to pick up the trace context from the receiving RPC call.
wrap_coroutine_in_current_trace_context(...): Wraps the coroutine in the currently active span.
wrap_rpc_in_trace_context(...): Attempts to record the trace context into the enclosed RPC call.