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

问题描述 投票:0回答:1

我尝试增加超时,我有应用程序在生产中运行,它已部署在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

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

ruby-on-rails ruby heroku timeout rack
1个回答
6
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.