首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >具有长期运行功能的Web应用程序克服502错误

具有长期运行功能的Web应用程序克服502错误
EN

Stack Overflow用户
提问于 2015-12-30 22:15:55
回答 2查看 1.5K关注 0票数 0

我有一个运行在烧瓶上的web应用程序和少量的JQuery。

该应用程序使用API收集数据,并向用户返回一个图表。对于较小的请求,一切都正常。但是,我想让用户能够要求收集大量的数据。当用户请求100个数据点时,程序需要运行10分钟。

在程序完成之前,抛出502错误。

更多细节:我已经设置了日志记录,可以看到这个程序在502之后继续运行和收集数据。我还使用ajax来调用运行时间过长的违规烧瓶函数,并在502上触发警报,这就是我知道错误代码的原因。

问:这个问题有解决办法吗?

提亚

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-12-30 22:57:16

的确有。您可能希望使用像芹菜这样的异步任务队列。

假设这是向用户返回响应的函数:

代码语言:javascript
复制
def respond():

    data = long_running_work()  # Blocks the return on long waits
    return Response(data)
    data = long_running_work()  # Doesn't get executed.

如果需要超过客户机期望的超时时间,就不能将长期运行的工作放在请求/响应周期中。另一方面:

代码语言:javascript
复制
def respond():

    # Shoves a message into rabbitmq 
    # to be dealt with by someone else
    send_task()  # takes no time, no blocking  

    return Response('Please wait')

send_task负责设置一个后台进程来完成这项工作,并使其在某个地方可用(在s3上,在您的服务器上,在任何地方)。在客户端js中,您可以显示一个旋转器和“等待”.消息,同时轮询背景中的预期位置,并在准备就绪时显示。这样,就不会有任何超时或损坏。

要获得更长(更好)的解释,请考虑

票数 2
EN

Stack Overflow用户

发布于 2015-12-30 22:57:15

如果您增加了请求的超时,或者以其他方式使用分页,则为502 HTTP状态码

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34538105

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档