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