我是flask的新手,最近创建了一个flask应用程序,用户可以在其中上传一个xlsx文件,并在处理后获取另一个xlsx文件。
我已经使用AWS EB免费套餐托管了此flask应用程序。如果处理时间少于30秒,则一切正常。但是我有一些情况,处理时间很大而且未知(15-20分钟)。当计算量很大时,我会收到504错误。
我想知道什么是处理这类请求的理想解决方案。我见过有人对ngnix和gunicorn配置提出建议,但我对此一无所知。
如果任何人都可以花些时间并提出可以做什么的想法,那将是很好的。
答案 0 :(得分:2)
您应该考虑将耗时的处理作为后台任务。 (related Guide)
如果您的应用需要两种应用结构,则可以利用Flask blueprints将它们统一(在模块中)为一个。
答案 1 :(得分:1)
我建议您考虑对此过程进行一些重新配置,这将有助于为您的用户提供更好的解决方案。
您应该考虑使用其他技术来分开处理和返回来自原始HTTP请求的新xlsx
文件。通过将这些组件分离开,最终用户将获得更好的体验,并且一路失败的机会更少(目前,一切都依赖于HTTP请求,如果失败,则整个过程将失败)。
您的HTTP请求将需要接受xslx
文件,此后它应该存储该文件并将该操作的处理排队。如果将文件存储在S3中,则可以使用S3 events来触发Lambda来处理此处理。如果您要执行一系列事件,将这些步骤分解为可以由Step Function触发的单个功能可能更合适。
您的应用程序将需要了解该操作已排队,因此您需要确定如何向用户公开此信息。您可以选择存储处理状态为PENDING
,直到您的步骤功能标记为完成为止,或者您可以选择将完成的文件通过电子邮件发送给用户(使用预先签名的URL)。