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.DummyLock¶
Pretending to be a lock.
- class kombu.asynchronous.semaphore.LaxBoundedSemaphore(value)¶
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, *partial_args, **partial_kwargs)¶
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.
Reset the semaphore, which also wipes out any waiting callbacks.
Change the size of the semaphore to accept more users.
If there are any waiters this will apply the first waiter that is waiting for the resource (FIFO order).
Change the size of the semaphore to accept less users.