繁体   English   中英

Flask EB 504 网关超时

[英]Flask EB 504 Gateway Time-out

我是 flask 的新手,最近创建了一个 flask 应用程序,用户上传一个 xlsx 文件并在处理后取回另一个 xlsx 文件。

我使用 AWS EB 免费套餐托管了这个 flask 应用程序。 如果处理时间少于 30 秒,一切正常。 但我有处理时间很长且未知的情况(15-20 分钟)。 当计算量很大时,我得到这个 504 错误。

我想知道处理这类请求的理想解决方案是什么。 我见过有人就 ngnix 和 gunicorn 配置提出建议,但我对它们一无所知。

如果任何人都可以花时间并给出可以做什么的想法,那就太好了。

超文本传输协议 (HTTP) 504 网关超时服务器错误响应代码表示服务器在充当网关或代理时,没有及时从上游服务器获得完成请求所需的响应。在给出响应之前请求已过期 - MDN

您应该考虑将时间密集型处理作为后台任务。 相关指南

如果您的应用程序需要两个应用程序结构,您可以利用Flask 蓝图将它们(在模块中)统一为一个。

我建议您考虑对此过程进行一些重新架构,这将有助于为您的用户提供更好的解决方案。

您应该考虑使用其他技术将新xlsx文件的处理和返回与原始 HTTP 请求分开。 通过将这些分开,您的最终用户将获得改进的体验,并且在此过程中发生故障的可能性较小(目前一切都依赖于 HTTP 请求,如果失败,则整个过程将失败)。

您的 HTTP 请求将需要接受xslx文件,之后它应该存储文件并排队处理此操作。 如果您将文件存储在S3中,则可以使用S3 事件触发Lambda来处理此处理。 如果您正在执行一系列事件,将这些步骤分解为可以由Step Function触发的单独功能可能更合适。

您的应用程序需要了解该操作已排队,因此您需要决定如何将此信息公开给用户。 您可以选择将处理状态存储为PENDING ,直到您的步骤 function 标记为完成,或者您可能选择 email 向用户发送一个已完成的文件(使用预签名 URL)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM