Python tornado.locks.Semaphore() Examples
The following are 30
code examples of tornado.locks.Semaphore().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
tornado.locks
, or try the search function
.
Example #1
Source File: locks_test.py From tornado-zh with MIT License | 6 votes |
def test_garbage_collection(self): # Test that timed-out waiters are occasionally cleaned from the queue. sem = locks.Semaphore(value=0) futures = [sem.acquire(timedelta(seconds=0.01)) for _ in range(101)] future = sem.acquire() self.assertEqual(102, len(sem._waiters)) # Let first 101 waiters time out, triggering a collection. yield gen.sleep(0.02) self.assertEqual(1, len(sem._waiters)) # Final waiter is still active. self.assertFalse(future.done()) sem.release() self.assertTrue(future.done()) # Prevent "Future exception was never retrieved" messages. for future in futures: self.assertRaises(TimeoutError, future.result)
Example #2
Source File: locks_test.py From teleport with Apache License 2.0 | 6 votes |
def test_garbage_collection(self): # Test that timed-out waiters are occasionally cleaned from the queue. sem = locks.Semaphore(value=0) futures = [sem.acquire(timedelta(seconds=0.01)) for _ in range(101)] future = sem.acquire() self.assertEqual(102, len(sem._waiters)) # Let first 101 waiters time out, triggering a collection. yield gen.sleep(0.02) self.assertEqual(1, len(sem._waiters)) # Final waiter is still active. self.assertFalse(future.done()) sem.release() self.assertTrue(future.done()) # Prevent "Future exception was never retrieved" messages. for future in futures: self.assertRaises(TimeoutError, future.result)
Example #3
Source File: locks_test.py From tornado-zh with MIT License | 6 votes |
def test_acquire(self): sem = locks.Semaphore() f0 = sem.acquire() self.assertTrue(f0.done()) # Wait for release(). f1 = sem.acquire() self.assertFalse(f1.done()) f2 = sem.acquire() sem.release() self.assertTrue(f1.done()) self.assertFalse(f2.done()) sem.release() self.assertTrue(f2.done()) sem.release() # Now acquire() is instant. self.assertTrue(sem.acquire().done()) self.assertEqual(0, len(sem._waiters))
Example #4
Source File: locks_test.py From teleport with Apache License 2.0 | 6 votes |
def test_acquire(self): sem = locks.Semaphore() f0 = sem.acquire() self.assertTrue(f0.done()) # Wait for release(). f1 = sem.acquire() self.assertFalse(f1.done()) f2 = sem.acquire() sem.release() self.assertTrue(f1.done()) self.assertFalse(f2.done()) sem.release() self.assertTrue(f2.done()) sem.release() # Now acquire() is instant. self.assertTrue(sem.acquire().done()) self.assertEqual(0, len(sem._waiters))
Example #5
Source File: locks_test.py From teleport with Apache License 2.0 | 6 votes |
def test_context_manager_contended(self): sem = locks.Semaphore() history = [] @gen.coroutine def f(index): with (yield sem.acquire()): history.append('acquired %d' % index) yield gen.sleep(0.01) history.append('release %d' % index) yield [f(i) for i in range(2)] expected_history = [] for i in range(2): expected_history.extend(['acquired %d' % i, 'release %d' % i]) self.assertEqual(expected_history, history)
Example #6
Source File: locks_test.py From tornado-zh with MIT License | 6 votes |
def test_context_manager_contended(self): sem = locks.Semaphore() history = [] @gen.coroutine def f(index): with (yield sem.acquire()): history.append('acquired %d' % index) yield gen.sleep(0.01) history.append('release %d' % index) yield [f(i) for i in range(2)] expected_history = [] for i in range(2): expected_history.extend(['acquired %d' % i, 'release %d' % i]) self.assertEqual(expected_history, history)
Example #7
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 6 votes |
def test_acquire(self): sem = locks.Semaphore() f0 = asyncio.ensure_future(sem.acquire()) self.assertTrue(f0.done()) # Wait for release(). f1 = asyncio.ensure_future(sem.acquire()) self.assertFalse(f1.done()) f2 = asyncio.ensure_future(sem.acquire()) sem.release() self.assertTrue(f1.done()) self.assertFalse(f2.done()) sem.release() self.assertTrue(f2.done()) sem.release() # Now acquire() is instant. self.assertTrue(asyncio.ensure_future(sem.acquire()).done()) self.assertEqual(0, len(sem._waiters))
Example #8
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 6 votes |
def test_context_manager_contended(self): sem = locks.Semaphore() history = [] @gen.coroutine def f(index): with (yield sem.acquire()): history.append("acquired %d" % index) yield gen.sleep(0.01) history.append("release %d" % index) yield [f(i) for i in range(2)] expected_history = [] for i in range(2): expected_history.extend(["acquired %d" % i, "release %d" % i]) self.assertEqual(expected_history, history)
Example #9
Source File: locks_test.py From tornado-zh with MIT License | 6 votes |
def test_acquire(self): sem = locks.Semaphore() f0 = sem.acquire() self.assertTrue(f0.done()) # Wait for release(). f1 = sem.acquire() self.assertFalse(f1.done()) f2 = sem.acquire() sem.release() self.assertTrue(f1.done()) self.assertFalse(f2.done()) sem.release() self.assertTrue(f2.done()) sem.release() # Now acquire() is instant. self.assertTrue(sem.acquire().done()) self.assertEqual(0, len(sem._waiters))
Example #10
Source File: locks_test.py From pySINDy with MIT License | 6 votes |
def test_acquire(self): sem = locks.Semaphore() f0 = sem.acquire() self.assertTrue(f0.done()) # Wait for release(). f1 = sem.acquire() self.assertFalse(f1.done()) f2 = sem.acquire() sem.release() self.assertTrue(f1.done()) self.assertFalse(f2.done()) sem.release() self.assertTrue(f2.done()) sem.release() # Now acquire() is instant. self.assertTrue(sem.acquire().done()) self.assertEqual(0, len(sem._waiters))
Example #11
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 6 votes |
def test_garbage_collection(self): # Test that timed-out waiters are occasionally cleaned from the queue. sem = locks.Semaphore(value=0) futures = [ asyncio.ensure_future(sem.acquire(timedelta(seconds=0.01))) for _ in range(101) ] future = asyncio.ensure_future(sem.acquire()) self.assertEqual(102, len(sem._waiters)) # Let first 101 waiters time out, triggering a collection. yield gen.sleep(0.02) self.assertEqual(1, len(sem._waiters)) # Final waiter is still active. self.assertFalse(future.done()) sem.release() self.assertTrue(future.done()) # Prevent "Future exception was never retrieved" messages. for future in futures: self.assertRaises(TimeoutError, future.result)
Example #12
Source File: locks.py From pySINDy with MIT License | 5 votes |
def __enter__(self): raise RuntimeError( "Use Semaphore like 'with (yield semaphore.acquire())', not like" " 'with semaphore'")
Example #13
Source File: locks_test.py From teleport with Apache License 2.0 | 5 votes |
def test_negative_value(self): self.assertRaises(ValueError, locks.Semaphore, value=-1)
Example #14
Source File: locks.py From pySINDy with MIT License | 5 votes |
def release(self): """Increment the counter and wake one waiter.""" if self._value >= self._initial_value: raise ValueError("Semaphore released too many times") super(BoundedSemaphore, self).release()
Example #15
Source File: locks.py From pySINDy with MIT License | 5 votes |
def __repr__(self): res = super(Semaphore, self).__repr__() extra = 'locked' if self._value == 0 else 'unlocked,value:{0}'.format( self._value) if self._waiters: extra = '{0},waiters:{1}'.format(extra, len(self._waiters)) return '<{0} [{1}]>'.format(res[1:-1], extra)
Example #16
Source File: locks_test.py From teleport with Apache License 2.0 | 5 votes |
def test_context_manager_exception(self): sem = locks.Semaphore() with self.assertRaises(ZeroDivisionError): with (yield sem.acquire()): 1 / 0 # Semaphore was released and can be acquired again. self.assertTrue(sem.acquire().done())
Example #17
Source File: locks_test.py From teleport with Apache License 2.0 | 5 votes |
def test_context_manager_async_await(self): # Repeat the above test using 'async with'. sem = locks.Semaphore() namespace = exec_test(globals(), locals(), """ async def f(): async with sem as yielded: self.assertTrue(yielded is None) """) yield namespace['f']() # Semaphore was released and can be acquired again. self.assertTrue(sem.acquire().done())
Example #18
Source File: locks_test.py From pySINDy with MIT License | 5 votes |
def test_negative_value(self): self.assertRaises(ValueError, locks.Semaphore, value=-1)
Example #19
Source File: locks.py From pySINDy with MIT License | 5 votes |
def __init__(self, value=1): super(Semaphore, self).__init__() if value < 0: raise ValueError('semaphore initial value must be >= 0') self._value = value
Example #20
Source File: locks_test.py From teleport with Apache License 2.0 | 5 votes |
def test_release_unacquired(self): # Unbounded releases are allowed, and increment the semaphore's value. sem = locks.Semaphore() sem.release() sem.release() # Now the counter is 3. We can acquire three times before blocking. self.assertTrue(sem.acquire().done()) self.assertTrue(sem.acquire().done()) self.assertTrue(sem.acquire().done()) self.assertFalse(sem.acquire().done())
Example #21
Source File: locks_test.py From teleport with Apache License 2.0 | 5 votes |
def test_acquire_timeout_preempted(self): sem = locks.Semaphore(1) yield sem.acquire() # This fires before the wait times out. self.io_loop.call_later(0.01, sem.release) acquire = sem.acquire(timedelta(seconds=0.02)) yield gen.sleep(0.03) yield acquire # No TimeoutError.
Example #22
Source File: locks_test.py From teleport with Apache License 2.0 | 5 votes |
def test_acquire_timeout(self): sem = locks.Semaphore(2) yield sem.acquire() yield sem.acquire() acquire = sem.acquire(timedelta(seconds=0.01)) self.io_loop.call_later(0.02, sem.release) # Too late. yield gen.sleep(0.3) with self.assertRaises(gen.TimeoutError): yield acquire sem.acquire() f = sem.acquire() self.assertFalse(f.done()) sem.release() self.assertTrue(f.done())
Example #23
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 5 votes |
def test_context_manager_timeout(self): sem = locks.Semaphore() with (yield sem.acquire(timedelta(seconds=0.01))): pass # Semaphore was released and can be acquired again. self.assertTrue(asyncio.ensure_future(sem.acquire()).done())
Example #24
Source File: locks.py From teleport with Apache License 2.0 | 5 votes |
def release(self): """Increment the counter and wake one waiter.""" if self._value >= self._initial_value: raise ValueError("Semaphore released too many times") super(BoundedSemaphore, self).release()
Example #25
Source File: locks.py From teleport with Apache License 2.0 | 5 votes |
def __enter__(self): raise RuntimeError( "Use Semaphore like 'with (yield semaphore.acquire())', not like" " 'with semaphore'")
Example #26
Source File: locks.py From teleport with Apache License 2.0 | 5 votes |
def __repr__(self): res = super(Semaphore, self).__repr__() extra = 'locked' if self._value == 0 else 'unlocked,value:{0}'.format( self._value) if self._waiters: extra = '{0},waiters:{1}'.format(extra, len(self._waiters)) return '<{0} [{1}]>'.format(res[1:-1], extra)
Example #27
Source File: locks.py From teleport with Apache License 2.0 | 5 votes |
def __init__(self, value=1): super(Semaphore, self).__init__() if value < 0: raise ValueError('semaphore initial value must be >= 0') self._value = value
Example #28
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 5 votes |
def test_context_manager_misuse(self): # Ensure we catch a "with sem", which should be # "with (yield sem.acquire())". with self.assertRaises(RuntimeError): with locks.Semaphore(): pass
Example #29
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 5 votes |
def test_context_manager_timeout_error(self): sem = locks.Semaphore(value=0) with self.assertRaises(gen.TimeoutError): with (yield sem.acquire(timedelta(seconds=0.01))): pass # Counter is still 0. self.assertFalse(asyncio.ensure_future(sem.acquire()).done())
Example #30
Source File: locks_test.py From opendevops with GNU General Public License v3.0 | 5 votes |
def test_release_unacquired(self): # Unbounded releases are allowed, and increment the semaphore's value. sem = locks.Semaphore() sem.release() sem.release() # Now the counter is 3. We can acquire three times before blocking. self.assertTrue(asyncio.ensure_future(sem.acquire()).done()) self.assertTrue(asyncio.ensure_future(sem.acquire()).done()) self.assertTrue(asyncio.ensure_future(sem.acquire()).done()) self.assertFalse(asyncio.ensure_future(sem.acquire()).done())