[config] adds documentation for Exclusive contextmanager
This commit is contained in:
@ -81,6 +81,26 @@ A dictionary, or dictionary-like, "services" named argument can be passed to the
|
|||||||
provided is pretty basic, and feature-less. But you can use much more evolved libraries instead of the provided
|
provided is pretty basic, and feature-less. But you can use much more evolved libraries instead of the provided
|
||||||
stub, and as long as it works the same (a.k.a implements a dictionary-like interface), the system will use it.
|
stub, and as long as it works the same (a.k.a implements a dictionary-like interface), the system will use it.
|
||||||
|
|
||||||
|
Solving concurrency problems
|
||||||
|
----------------------------
|
||||||
|
|
||||||
|
If a service cannot be used by more than one thread at a time, either because it's just not threadsafe, or because
|
||||||
|
it requires to carefully order the calls made (apis that includes nonces, or work on results returned by previous
|
||||||
|
calls are usually good candidates), you can use the :class:`bonobo.config.Exclusive` context processor to lock the
|
||||||
|
use of a dependency for a time period.
|
||||||
|
|
||||||
|
.. code-block:: python
|
||||||
|
|
||||||
|
from bonobo.config import Exclusive
|
||||||
|
|
||||||
|
def t1(api):
|
||||||
|
with Exclusive(api):
|
||||||
|
api.first_call()
|
||||||
|
api.second_call()
|
||||||
|
# ... etc
|
||||||
|
api.last_call()
|
||||||
|
|
||||||
|
|
||||||
Service configuration (to be decided and implemented)
|
Service configuration (to be decided and implemented)
|
||||||
:::::::::::::::::::::::::::::::::::::::::::::::::::::
|
:::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user