Exemple #1
0
class ErrorhookedGreenlet(OriginalGreenlet):
    def _report_error(self, exc_info):
        sys.excepthook(exc_info[0], exc_info[1], exc_info[2])

if config.debug:
    sys.excepthook = handleError
else:
    sys.excepthook = handleErrorNotify

gevent.Greenlet = gevent.greenlet.Greenlet = ErrorhookedGreenlet
reload(gevent)

if __name__ == "__main__":
    import time
    from gevent import monkey
    monkey.patch_all(thread=False, ssl=False)
    import Debug

    def sleeper():
        print "started"
        time.sleep(3)
        print "stopped"
    thread1 = gevent.spawn(sleeper)
    thread2 = gevent.spawn(sleeper)
    time.sleep(1)
    print "killing..."
    thread1.throw(Exception("Hello"))
    thread2.throw(Debug.Notify("Throw"))
    print "killed"
Exemple #2
0

gevent.hub.Hub.handle_error = handleGreenletError

try:
    signal.signal(signal.SIGTERM,
                  lambda signum, stack_frame: shutdown("SIGTERM"))
except Exception as err:
    logging.debug("Error setting up SIGTERM watcher: %s" % err)

if __name__ == "__main__":
    import time
    from gevent import monkey
    monkey.patch_all(thread=False, ssl=False)
    import Debug

    def sleeper(num):
        print "started", num
        time.sleep(3)
        raise Exception("Error")
        print "stopped", num

    thread1 = gevent.spawn(sleeper, 1)
    thread2 = gevent.spawn(sleeper, 2)
    time.sleep(1)
    print "killing..."
    thread1.kill(exception=Debug.Notify("Worker stopped"))
    #thread2.throw(Debug.Notify("Throw"))
    print "killed"
    gevent.joinall([thread1, thread2])