OpenCensus Runtime Context
Project Links
Meta
Author: OpenCensus Authors
Classifiers
Intended Audience
- Developers
Development Status
- 3 - Alpha
License
- OSI Approved :: Apache Software License
Programming Language
- Python
- Python :: 2
- Python :: 2.7
- Python :: 3
- Python :: 3.4
- Python :: 3.5
- Python :: 3.6
- Python :: 3.7
- Python :: 3.8
- Python :: 3.9
The OpenCensus Runtime Context provides in-process context propagation. By default, thread local storage is used for Python 2.7, 3.4 and 3.5; contextvars is used for Python >= 3.6, which provides asyncio support.
Installation
This library is installed by default with opencensus, there is no need to install it explicitly.
Usage
In most cases context propagation happens automatically within a process, following the control flow of threads and asynchronous coroutines. The runtime context is a dictionary stored in a context variable when available, and in thread local storage otherwise.
There are cases where you may want to propagate the context explicitly:
Explicit Thread Creation
from threading import Thread
from opencensus.common.runtime_context import RuntimeContext
def work(name):
# here you will get the context from the parent thread
print(RuntimeContext)
thread = Thread(
# propagate context explicitly
target=RuntimeContext.with_current_context(work),
args=('foobar',),
)
thread.start()
thread.join()
Thread Pool
from multiprocessing.dummy import Pool as ThreadPool
from opencensus.common.runtime_context import RuntimeContext
def work(name):
# here you will get the context from the parent thread
print(RuntimeContext)
pool = ThreadPool(2)
# propagate context explicitly
pool.map(RuntimeContext.with_current_context(work), [
'bear',
'cat',
'dog',
'horse',
'rabbit',
])
pool.close()
pool.join()
References
Wheel compatibility matrix
Files in release
Extras:
None
Dependencies:
and
contextvars