This document is for Kombu's development version, which can be significantly different from previous releases. Get the stable docs here: 5.0.
Semaphores and concurrency primitives.
- class kombu.asynchronous.semaphore.LaxBoundedSemaphore(value: int)[source]¶
Asynchronous Bounded Semaphore.
Lax means that the value will stay within the specified range even if released more times than it was acquired.
>>> x = LaxBoundedSemaphore(2)
>>> x.acquire(print, 'HELLO 1') HELLO 1
>>> x.acquire(print, 'HELLO 2') HELLO 2
>>> x.acquire(print, 'HELLO 3') >>> x._waiters # private, do not access directly [print, ('HELLO 3',)]
>>> x.release() HELLO 3
- acquire(callback: Callable[P, None], *partial_args: P.args, **partial_kwargs: P.kwargs) bool [source]¶
This will immediately apply
callbackif the resource is available, otherwise the callback is suspended until the semaphore is released.
callback (Callable) – The callback to apply.
*partial_args (Any) – partial arguments to callback.
- release() None [source]¶
If there are any waiters this will apply the first waiter that is waiting for the resource (FIFO order).