From b2f58bdf978333640a6af74543c84bdc7d3eaa82 Mon Sep 17 00:00:00 2001 From: Ryan Williams Date: Wed, 24 Feb 2010 22:19:57 -0500 Subject: [PATCH] Removed redundant switch impl in pyevent hub. Added more exc_clears where needed. Slightly optimized switch a bit. --- eventlet/hubs/hub.py | 5 ++--- eventlet/hubs/poll.py | 1 + eventlet/hubs/pyevent.py | 17 ----------------- eventlet/hubs/selects.py | 1 + 4 files changed, 4 insertions(+), 20 deletions(-) diff --git a/eventlet/hubs/hub.py b/eventlet/hubs/hub.py index c1d2eb3..c2a1145 100644 --- a/eventlet/hubs/hub.py +++ b/eventlet/hubs/hub.py @@ -106,9 +106,8 @@ class BaseHub(object): if self.greenlet.dead: self.greenlet = greenlet.greenlet(self.run) try: - current = greenlet.getcurrent() - if self.greenlet.parent is not current: - current.parent = self.greenlet + if self.greenlet.parent is not cur: + cur.parent = self.greenlet except ValueError: pass # gets raised if there is a greenlet parent cycle sys.exc_clear() diff --git a/eventlet/hubs/poll.py b/eventlet/hubs/poll.py index e6b3c27..512b008 100644 --- a/eventlet/hubs/poll.py +++ b/eventlet/hubs/poll.py @@ -108,3 +108,4 @@ class Hub(BaseHub): raise except: self.squelch_exception(fileno, sys.exc_info()) + sys.exc_clear() diff --git a/eventlet/hubs/pyevent.py b/eventlet/hubs/pyevent.py index 1f75093..f9d2496 100644 --- a/eventlet/hubs/pyevent.py +++ b/eventlet/hubs/pyevent.py @@ -45,23 +45,6 @@ class Hub(BaseHub): self.signal_exc_info = None self.signal(2, lambda signalnum, frame: self.greenlet.parent.throw(KeyboardInterrupt)) self.events_to_add = [] - - def switch(self): - cur = greenlet.getcurrent() - assert cur is not self.greenlet, 'Cannot switch to MAINLOOP from MAINLOOP' - switch_out = getattr(cur, 'switch_out', None) - if switch_out is not None: - try: - switch_out() - except: - traceback.print_exception(*sys.exc_info()) - if self.greenlet.dead: - self.greenlet = greenlet.greenlet(self.run) - try: - greenlet.getcurrent().parent = self.greenlet - except ValueError: - pass - return self.greenlet.switch() def dispatch(self): loop = event.loop diff --git a/eventlet/hubs/selects.py b/eventlet/hubs/selects.py index d20f3cf..8dcc35f 100644 --- a/eventlet/hubs/selects.py +++ b/eventlet/hubs/selects.py @@ -57,3 +57,4 @@ class Hub(BaseHub): raise except: self.squelch_exception(fileno, sys.exc_info()) + sys.exc_clear() \ No newline at end of file