gpt4 book ai didi

python - 如何使用 python Flask 防止长时间运行的工作负载出现 230 秒的 azure 网关超时

转载 作者:行者123 更新时间:2023-12-02 23:23:23 26 4
gpt4 key购买 nike

我有一个Python Flask应用程序作为Azure Web应用程序,其中一个功能是计算密集型工作负载,需要超过5分钟才能处理,是否有任何黑客可以通过保持TCP连接之间的事件来防止网关超时错误函数处理数据时客户端和api?下面是当前代码的示例。

from flask import Flask

app = Flask(__name__)

@app.route('/data')
def data():
mydata = super_long_process_function()
# takes more than 5 minutes to process
return mydata

由于super_long_process_function需要超过5分钟,因此它总是会超时并出现504网关超时。我想提到的一件事是,这是 TCP 级别的空闲超时,这意味着如果连接仅空闲并且没有发生数据传输,则只有此时才会达到此超时。那么,flask 中是否有任何 hack 可以用来防止我们处理数据时出现超时,因为根据我的研究和阅读 Microsoft 文档,网络应用程序无法更改 230 秒的限制。

最佳答案

简而言之:正如您所说,230 秒超时无法更改

230 seconds is the maximum amount of time that a request can take without sending any data back to the response. It is not configurable.

来源:GitHub issue

没有响应时,就会发生超时。保持连接打开并发送数据没有帮助。

有几种方法可以解决这个问题。您可以使用以下两种可能的解决方案来触发长时间运行的任务,而不会出现超时问题。

  1. 仅使用 HTTP 调用触发长时间运行的任务,但不要等到任务完成后再返回响应。
  2. 使用类似 Storage Queues 的消息传递机制触发任务或Service Bus .

要使用长时间运行的任务的结果更新 Web 应用程序,请考虑让响应包含前端可以调用以定期检查任务完成情况的 URL,您的请求有一个回调 URL 以在任务执行时调用已完成或实现Azure Web PubSub用于向客户端发送状态更新。

关于python - 如何使用 python Flask 防止长时间运行的工作负载出现 230 秒的 azure 网关超时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70257712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com