diff options
| author | Ryan Williams <breath@alum.mit.edu> | 2010-10-27 09:56:31 -0700 |
|---|---|---|
| committer | Ryan Williams <breath@alum.mit.edu> | 2010-10-27 09:56:31 -0700 |
| commit | 294b9bc337d751766bd50bf72e60836500ffc990 (patch) | |
| tree | df3347120f95a93336ed0d6292d41217f4d19966 /eventlet/event.py | |
| parent | e374a8d741212c2746008c19f6ab7b0c5582dcf4 (diff) | |
| download | eventlet-294b9bc337d751766bd50bf72e60836500ffc990.tar.gz | |
Patch and test from Malcolm Cleaton for Event objects.
Diffstat (limited to 'eventlet/event.py')
| -rw-r--r-- | eventlet/event.py | 20 |
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. |
