我有一个烧瓶应用程序,它接受一个请求,基于它执行一个函数,并将结果返回给用户。我需要确保如果函数在请求到达后五秒内没有返回结果,则将另一个函数的结果发送给用户。此外,即使在完成对请求的响应之后,原始功能仍继续工作并结束,这一点很重要。如果原始函数在 5 秒内返回结果,则需要在响应中返回其结果。
有什么功能可以做到这一点吗?
这是一个伪代码,大致描述了我需要什么:
@application.route("/", methods=['POST'])
def main():
executor = SomeExecutor()
# устанавливаем функцию, которая должна стриггериться по истечении 5 секунд, если main_function не успеет отработать
executor.execute_on_timeout(alternative_function, args = [request], exec_after=5)
# main_function продолжает работать даже по истечении 5 секунд
executor.execute(main_function, args = [request])
# получаем результат от одной из функций (ждем максимум 5 секунд + время выполнения alternative_function)
response = executor.result()
return response
这是使用concurrent.futures.wait的一种选择: