python中函数的最长执行时间(flask)

2024-04-19 16:14:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图限制函数在python(flask)中运行的时间。它看起来像这样:

def my_function:
    try:
        long_function_time()
    catch TimeOutException:
        return "Function took too long to execute"

def long_function_time:
    #stuff here

我最初尝试过使用信号,但被告知这不是一个好方法,因为flask运行在线程环境中。我希望最大的执行时间是灵活的,这样我就可以很容易地改变它。

我目前使用的代码(有时不起作用,不知道原因):

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

提前谢谢!


Tags: flasknewsignalreturntimedef时间timeout