Removed redundant switch impl in pyevent hub. Added more exc_clears where needed. Slightly optimized switch a bit.
This commit is contained in:
@@ -106,9 +106,8 @@ class BaseHub(object):
|
|||||||
if self.greenlet.dead:
|
if self.greenlet.dead:
|
||||||
self.greenlet = greenlet.greenlet(self.run)
|
self.greenlet = greenlet.greenlet(self.run)
|
||||||
try:
|
try:
|
||||||
current = greenlet.getcurrent()
|
if self.greenlet.parent is not cur:
|
||||||
if self.greenlet.parent is not current:
|
cur.parent = self.greenlet
|
||||||
current.parent = self.greenlet
|
|
||||||
except ValueError:
|
except ValueError:
|
||||||
pass # gets raised if there is a greenlet parent cycle
|
pass # gets raised if there is a greenlet parent cycle
|
||||||
sys.exc_clear()
|
sys.exc_clear()
|
||||||
|
@@ -108,3 +108,4 @@ class Hub(BaseHub):
|
|||||||
raise
|
raise
|
||||||
except:
|
except:
|
||||||
self.squelch_exception(fileno, sys.exc_info())
|
self.squelch_exception(fileno, sys.exc_info())
|
||||||
|
sys.exc_clear()
|
||||||
|
@@ -46,23 +46,6 @@ class Hub(BaseHub):
|
|||||||
self.signal(2, lambda signalnum, frame: self.greenlet.parent.throw(KeyboardInterrupt))
|
self.signal(2, lambda signalnum, frame: self.greenlet.parent.throw(KeyboardInterrupt))
|
||||||
self.events_to_add = []
|
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):
|
def dispatch(self):
|
||||||
loop = event.loop
|
loop = event.loop
|
||||||
while True:
|
while True:
|
||||||
|
@@ -57,3 +57,4 @@ class Hub(BaseHub):
|
|||||||
raise
|
raise
|
||||||
except:
|
except:
|
||||||
self.squelch_exception(fileno, sys.exc_info())
|
self.squelch_exception(fileno, sys.exc_info())
|
||||||
|
sys.exc_clear()
|
Reference in New Issue
Block a user