在gem类超时时覆盖30秒超时

时间:2013-08-09 02:43:50

标签: ruby-on-rails timeout thin

我的瘦服务器在30秒后超时。我想覆盖这个ruby文件。

DEFAULT_TIMEOUT从30秒到120秒。怎么做?请告诉我。

代码在这里: https://github.com/macournoyer/thin/blob/master/lib/thin/server.rb

我想覆盖没有“已经初始化的常量”警告。

1 个答案:

答案 0 :(得分:5)

参见帮助

➜  ~/app ✓ thin --help | grep timeout
   -t, --timeout SEC                Request or command timeout in sec (default: 30)

因此,您可以在启动服务器时从命令行更改它

➜  ~/app ✓ thin --timeout 60 start

或者您可以在/etc/thin/your_app.yml之类的地方设置配置文件

---
timeout: 60

然后运行瘦,用

指向此YAML文件
thin -C /etc/thin/your_app.yml start

作为旁注,您应该考虑是否真的需要增加超时。通常,长时间运行的请求应排队,稍后通过delayed_jobresque等服务运行


在看到您的评论并了解到您正在使用Heroku之后,我建议您阅读 the documentation

  

有时,Web请求可能会挂起,或者您的应用程序需要花费大量时间来处理。当发生这种情况时,路由器将终止请求,如果完成时间超过30秒。当请求离开路由器时,超时倒计时开始。然后,您的应用程序必须在dyno中处理该请求,然后在30秒内将响应传送回路由器以避免超时。

如果您使用Heroku,我甚至会更强烈建议您查看delayed_job,resque或类似信息。您将至少有一个工作程序正在运行以处理队列。 HireFire是一项优质服务,只需在您的队列实际有待处理的工作时启动工作人员来节省资金。