Skip to content

Instantly share code, notes, and snippets.

@hackaugusto
Created February 3, 2020 12:49
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hackaugusto/1a35953e2cafa849437c34a603a1114a to your computer and use it in GitHub Desktop.
Save hackaugusto/1a35953e2cafa849437c34a603a1114a to your computer and use it in GitHub Desktop.
#!/usr/bin/python
import signal
import gevent
import gevent.event
stop_event = gevent.event.AsyncResult()
def long_running():
while True:
gevent.sleep(1)
print(".", end="")
def stop_after(s):
gevent.sleep(s)
def stop_after_with_exception(s):
gevent.sleep(s)
raise RuntimeError("oops")
def sig_set(sig=None, _frame=None) -> None:
stop_event.set(sig)
gevent.signal(signal.SIGQUIT, sig_set)
gevent.signal(signal.SIGTERM, sig_set)
gevent.signal(signal.SIGINT, sig_set)
greenlets = list()
greenlets.append(gevent.spawn(long_running))
greenlets.append(gevent.spawn(stop_after, 5))
greenlets.append(gevent.spawn(stop_after_with_exception, 4))
for g in greenlets:
g.link(stop_event)
stop_event.get()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment