gevent.contextvars
– Cooperative contextvars
¶Cooperative contextvars
module.
This module was added to Python 3.7. The gevent version is available on all supported versions of Python. However, see an important note about gevent 20.9.
Context variables are like greenlet-local variables, just more
inconvenient to use. They were designed to work around limitations in
asyncio
and are rarely needed by greenlet-based code.
The primary difference is that snapshots of the state of all context
variables in a given greenlet can be taken, and later restored for
execution; modifications to context variables are “scoped” to the
duration that a particular context is active. (This state-restoration
support is rarely useful for greenlets because instead of always
running “tasks” sequentially within a single thread like asyncio
does, greenlet-based code usually spawns new greenlets to handle each
task.)
The gevent implementation is based on the Python reference implementation from PEP 567 and doesn’t have much optimization. In particular, setting context values isn’t constant time.
New in version 1.5a3.
Changed in version 20.9.0: On Python 3.7 and above, this module is no longer monkey-patched in place of the standard library version. gevent depends on greenlet 0.4.17 which includes support for context variables. This means that any number of greenlets can be running any number of asyncio tasks each with their own context variables. This module is only greenlet aware, not asyncio task aware, so its use is not recommended on Python 3.7 and above.
On previous versions of Python, this module continues to be a solution for backporting code. It is also available if you wish to use the contextvar API in a strictly greenlet-local manner.
Bases: Mapping
Implementation of contextvars.Context
Creates an empty context.
Bases: object
Implementation of contextvars.ContextVar
.
Bases: object
Opaque implementation of contextvars.Token
.
A read-only attribute set to the value the variable had before
the set()
call, or to MISSING
if the variable wasn’t set
before.
A read-only attribute pointing to the variable that created the token
Next page: gevent.events
– Publish/subscribe event infrastructure