Fix older gevent compatibility
This commit is contained in:
parent
8c09fd39db
commit
5d0cc0b205
1 changed files with 15 additions and 3 deletions
|
@ -10,7 +10,9 @@ last_error = None
|
|||
|
||||
def shutdown():
|
||||
try:
|
||||
if "file_server" in dir(sys.modules["main"]):
|
||||
gevent.spawn(sys.modules["main"].file_server.stop)
|
||||
if "ui_server" in dir(sys.modules["main"]):
|
||||
gevent.spawn(sys.modules["main"].ui_server.stop)
|
||||
except Exception, err:
|
||||
print "Proper shutdown error: %s" % err
|
||||
|
@ -49,7 +51,17 @@ else:
|
|||
|
||||
|
||||
# Override default error handler to allow silent killing / custom logging
|
||||
if "handle_error" in dir(gevent.hub.Hub):
|
||||
gevent.hub.Hub._original_handle_error = gevent.hub.Hub.handle_error
|
||||
else:
|
||||
logging.debug("gevent.hub.Hub.handle_error not found using old gevent hooks")
|
||||
OriginalGreenlet = gevent.Greenlet
|
||||
class ErrorhookedGreenlet(OriginalGreenlet):
|
||||
def _report_error(self, exc_info):
|
||||
sys.excepthook(exc_info[0], exc_info[1], exc_info[2])
|
||||
|
||||
gevent.Greenlet = gevent.greenlet.Greenlet = ErrorhookedGreenlet
|
||||
reload(gevent)
|
||||
|
||||
def handleGreenletError(self, context, type, value, tb):
|
||||
if isinstance(value, str):
|
||||
|
|
Loading…
Reference in a new issue