超时不适用于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