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():
|
def shutdown():
|
||||||
try:
|
try:
|
||||||
|
if "file_server" in dir(sys.modules["main"]):
|
||||||
gevent.spawn(sys.modules["main"].file_server.stop)
|
gevent.spawn(sys.modules["main"].file_server.stop)
|
||||||
|
if "ui_server" in dir(sys.modules["main"]):
|
||||||
gevent.spawn(sys.modules["main"].ui_server.stop)
|
gevent.spawn(sys.modules["main"].ui_server.stop)
|
||||||
except Exception, err:
|
except Exception, err:
|
||||||
print "Proper shutdown error: %s" % err
|
print "Proper shutdown error: %s" % err
|
||||||
|
@ -49,7 +51,17 @@ else:
|
||||||
|
|
||||||
|
|
||||||
# Override default error handler to allow silent killing / custom logging
|
# 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
|
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):
|
def handleGreenletError(self, context, type, value, tb):
|
||||||
if isinstance(value, str):
|
if isinstance(value, str):
|
||||||
|
|
Loading…
Reference in a new issue