Skip to content

Latest commit

 

History

History
 
 

opencensus-context

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 

OpenCensus Runtime Context

pypi

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