heroku和django: heroku在函数完成之前停止它



我在Heroku上部署了一个Django应用。我在我的应用程序中有一个函数(内部视图),需要一些时间(3m-5m)才能返回。

问题是,当应用程序部署到Heroku时,函数没有返回。在我的电脑上运行良好。

Heroku没有给我有用的反馈。日志中没有'timeout'或任何内容。

三到五分钟对于一个请求来说太长了。Heroku会杀死这样的请求:

最佳实践是将web应用程序的响应时间控制在500ms以下,这将释放应用程序以处理更多请求,并为访问者提供高质量的用户体验。偶尔,web请求可能会挂起或花费过多的时间来处理您的应用程序。当这种情况发生时,如果请求完成时间超过30秒,路由器将终止请求。

我不知道为什么你没有在日志中看到超时,但是如果你真的需要那么多时间来计算一些东西,你需要异步地做它。

有很多方法可以做到这一点,例如,你可以将工作排队,然后立即响应"正在加载";状态,然后轮询后端,并在结果准备好时更新视图。

首先阅读Worker Dynos, Background Jobs和Queueing,然后决定如何继续。我们不能告诉你什么是"正确的"。做这件事的方法;这是你需要决定的关于你的应用程序。

最新更新