import gevent, sys last_error = None def handleError(*args): global last_error if not args: # Get last error args = sys.exc_info() silent = True else: silent = False print "Error catched", args last_error = args if not silent: sys.__excepthook__(*args) OriginalGreenlet = gevent.Greenlet class ErrorhookedGreenlet(OriginalGreenlet): def _report_error(self, exc_info): handleError(exc_info[0], exc_info[1], exc_info[2]) sys.excepthook = handleError gevent.Greenlet = gevent.greenlet.Greenlet = ErrorhookedGreenlet reload(gevent)