超时不适用于Rails应用程序的heroku

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了超时不适用于Rails应用程序的heroku相关的知识,希望对你有一定的参考价值。

我尝试增加超时,我有应用程序在生产中运行,它已部署在heroku上。我有一些请求需要超过30秒。这些请求都插入数据库中。由于要求,我无法将这些插入移动到后台工作。我将超时时间增加到60秒,后来我把它增加到80秒,并且工作正常。但最近它停止了运行,无论我做什么都没有让我增加超时。这对开发环境完全正常,但不适用于生产。我使用的宝石是机架式的

我用过这些选项:

Rack::Timeout.timeout = 60  # seconds
Rack::Timeout.wait_timeout = 60
Rack::Timeout.wait_overtime = 60
Rack::Timeout.service_timeout = 60
Rack::Timeout.service_past_wait = true

最初我只使用超时选项,它曾经工作正常。但后来我尝试添加更多选项,希望其中任何一个都能正常工作。

服务器输出:

    2018-09-17T08:00:32.163182+00:00 heroku[router]: at=error code=H12 desc="Request timeout"
method=POST path="/organizations/53/events" host=HOST_NAME 
request_id=abbd22bf-5298-4480-m027-aa00a52a0587 fwd="103.7.79.236" dyno=web.1
connect=1ms service=30135ms status=503 bytes=0 protocol=https

任何帮助,将不胜感激。提前致谢。

答案

H12是由Heroku提供的超时,不是由您的应用程序提出的。 Heroku没有给你一个增加超时的方法。

无论如何,你应该将其移动为异步。一种方法是触发创建具有状态的“作业”对象的请求。然后,您需要做的一切都是在后台执行的。操作完成后,将状态值从“挂起”更新为“成功”。

客户端可以获取作业以了解该异步操作的进展。

以上是关于超时不适用于Rails应用程序的heroku的主要内容,如果未能解决你的问题,请参考以下文章

如何使 animate.css 在 Rails 中工作?由于 animate-rails 不适用于 heroku

Rails 6 ActionText 不适用于 Heroku(未定义的方法 'rich_text_area_tag')

jQuery 适用于 Heroku,但不适用于 Rails localhost

引导下拉菜单不适用于heroku

Rails 应用程序 HTTP 到 HTTPS 重定向不适用于公开的 API

通过 API 上传文件时 Heroku 前端超时