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

Zee*_*mat 0 ruby rack timeout ruby-on-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
Run Code Online (Sandbox Code Playgroud)

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

服务器输出:

    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
Run Code Online (Sandbox Code Playgroud)

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

Dam*_*IEU 6

H12是Heroku的,而不是你的应用程序提出给予暂停.Heroku没有给你一个增加超时的方法.

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

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