summaryrefslogtreecommitdiff
path: root/eventlet/event.py
diff options
context:
space:
mode:
authorRyan Williams <breath@alum.mit.edu>2010-10-27 09:56:31 -0700
committerRyan Williams <breath@alum.mit.edu>2010-10-27 09:56:31 -0700
commit294b9bc337d751766bd50bf72e60836500ffc990 (patch)
treedf3347120f95a93336ed0d6292d41217f4d19966 /eventlet/event.py
parente374a8d741212c2746008c19f6ab7b0c5582dcf4 (diff)
downloadeventlet-294b9bc337d751766bd50bf72e60836500ffc990.tar.gz
Patch and test from Malcolm Cleaton for Event objects.
Diffstat (limited to 'eventlet/event.py')
-rw-r--r--eventlet/event.py20
1 files changed, 9 insertions, 11 deletions
diff --git a/eventlet/event.py b/eventlet/event.py
index 37bfdd1..bbc4a3d 100644
--- a/eventlet/event.py
+++ b/eventlet/event.py
@@ -153,18 +153,16 @@ class Event(object):
exc = (exc, )
self._exc = exc
hub = hubs.get_hub()
- if self._waiters:
+ for waiter in self._waiters:
hub.schedule_call_global(
- 0, self._do_send, self._result, self._exc, self._waiters.copy())
-
- def _do_send(self, result, exc, waiters):
- while waiters:
- waiter = waiters.pop()
- if waiter in self._waiters:
- if exc is None:
- waiter.switch(result)
- else:
- waiter.throw(*exc)
+ 0, self._do_send, self._result, self._exc, waiter)
+
+ def _do_send(self, result, exc, waiter):
+ if waiter in self._waiters:
+ if exc is None:
+ waiter.switch(result)
+ else:
+ waiter.throw(*exc)
def send_exception(self, *args):
"""Same as :meth:`send`, but sends an exception to waiters.