def timeout(timeout_seconds):
def decorate(function):
message = "Timeout (%s sec) elapsed for test %s" % (timeout_seconds, function.__name__)
def handler(signum, frame):
raise TimeoutError(message)
def new_f(*args, **kwargs):
old = signal.signal(signal.SIGALRM, handler)
signal.alarm(timeout_seconds)
try:
function_result = function(*args, **kwargs)
finally:
signal.signal(signal.SIGALRM, old)
signal.alarm(0)
return function_result
new_f.func_name = function.func_name
return new_f
return decorate
评论列表
文章目录