Skip to content

Instantly share code, notes, and snippets.

@kemingy
Last active July 27, 2017 02:34
Show Gist options
  • Select an option

  • Save kemingy/7798e554cf4af67872412ab77e7bfaeb to your computer and use it in GitHub Desktop.

Select an option

Save kemingy/7798e554cf4af67872412ab77e7bfaeb to your computer and use it in GitHub Desktop.
import signal
from time import sleep
from random import randint
def handler(signum, frame):
print('signal:', signum)
raise Exception('handler over')
def retry(retry_times=3, interval=5):
def decorator(func):
def wrapper(*args, **kw):
for _ in range(retry_times):
try:
signal.alarm(interval)
func(*args, **kw)
signal.alarm(0)
break
except Exception as err:
print(err)
print('Time out')
sleep(interval)
return wrapper
return decorator
@retry(retry_times=5, interval=3)
def random_sleep():
n = randint(0, 5)
print('sleep for %d seconds' % n)
sleep(n)
print('wake up')
if __name__ == '__main__':
signal.signal(signal.SIGALRM, handler)
random_sleep()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment