我试图限制允许函数在 python (flask) 中运行的时间。它看起来像这样:
def my_function:
try:
long_function_time()
catch TimeOutException:
return "Function took too long to execute"
def long_function_time:
#stuff here
我最初尝试使用信号,但被告知这不是一个好方法,因为烧瓶在线程环境中运行。我希望最大执行时间灵活,以便我可以轻松更改它。
我目前使用的代码(有时不起作用,不知道为什么):
class TimedOutExc(Exception):
pass
def deadline(timeout, *args):
def decorate(f):
def handler(signum, frame):
signal.alarm(0)
raise TimedOutExc()
def new_f(*args):
signal.signal(signal.SIGALRM, handler)
signal.alarm(timeout)
return f(*args)
new_f.__name__ = f.__name__
return new_f
return decorate
提前致谢!