Semaphores - kombu.async.semaphore¶
kombu.async.semaphore¶
Semaphores and concurrency primitives.
-
class
kombu.async.semaphore.
DummyLock
¶ Pretending to be a lock.
-
class
kombu.async.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.
Example:
>>> from future import print_statement as printf # ^ ignore: just fooling stupid pyflakes
>>> x = LaxBoundedSemaphore(2)
>>> x.acquire(printf, 'HELLO 1') HELLO 1
>>> x.acquire(printf, 'HELLO 2') HELLO 2
>>> x.acquire(printf, 'HELLO 3') >>> x._waiters # private, do not access directly [print, ('HELLO 3', )]
>>> x.release() HELLO 3
-
acquire
(callback, *partial_args)¶ Acquire semaphore, applying
callback
if the resource is available.Parameters: - callback – The callback to apply.
- *partial_args – partial arguments to callback.
-
clear
()¶ Reset the semaphore, which also wipes out any waiting callbacks.
-
grow
(n=1)¶ Change the size of the semaphore to accept more users.
-
release
()¶ Release semaphore.
If there are any waiters this will apply the first waiter that is waiting for the resource (FIFO order).
-
shrink
(n=1)¶ Change the size of the semaphore to accept less users.
-