超时不适用于 Rails 应用程序的 heroku
Timeout not working on heroku for Rails application
我尝试增加超时时间,我在生产中有应用程序 运行 并且部署在 heroku 上。我有一些需要超过 30 秒的请求。这些请求是在数据库中的插入。由于要求,我无法将这些插入移动到后台作业。我将超时时间增加到 60 秒,后来我将其增加到 80 秒并且工作正常。但最近它停止了 运行 无论我做什么它都不让我增加超时。这在开发环境中工作得很好,但在生产环境中却不行。 gem 我用的是 rack-timout
我使用了这些选项:
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 没有给你增加超时的方法。
无论如何你都应该把它移到异步的。一种方法可能是触发创建一个具有状态的 "job" 对象的请求。然后,您需要做的一切都在后台执行。
操作完成后,您将状态值从 "pending" 更新为 "success"。
客户端可以获取作业以了解该异步操作的进度。
我尝试增加超时时间,我在生产中有应用程序 运行 并且部署在 heroku 上。我有一些需要超过 30 秒的请求。这些请求是在数据库中的插入。由于要求,我无法将这些插入移动到后台作业。我将超时时间增加到 60 秒,后来我将其增加到 80 秒并且工作正常。但最近它停止了 运行 无论我做什么它都不让我增加超时。这在开发环境中工作得很好,但在生产环境中却不行。 gem 我用的是 rack-timout
我使用了这些选项:
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 没有给你增加超时的方法。
无论如何你都应该把它移到异步的。一种方法可能是触发创建一个具有状态的 "job" 对象的请求。然后,您需要做的一切都在后台执行。 操作完成后,您将状态值从 "pending" 更新为 "success"。
客户端可以获取作业以了解该异步操作的进度。