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

jim*_*gic 2 timeout ruby-on-rails thin

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

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

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

我想覆盖没有"已经初始化的常量"警告.

dee*_*our 5

请参阅帮助

?  ~/app ? thin --help | grep timeout
   -t, --timeout SEC                Request or command timeout in sec (default: 30)
Run Code Online (Sandbox Code Playgroud)

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

?  ~/app ? thin --timeout 60 start
Run Code Online (Sandbox Code Playgroud)

或者您可以在某处设置配置文件,就像这样/etc/thin/your_app.yml的东西

---
timeout: 60
Run Code Online (Sandbox Code Playgroud)

然后运行thin,将其指向此YAML文件

thin -C /etc/thin/your_app.yml start
Run Code Online (Sandbox Code Playgroud)

作为旁注,您应该考虑是否真的需要增加超时.通常,长时间运行的请求应排队等待,然后通过像delayed_job或等服务运行resque


看到你的评论并了解到你正在使用Heroku,我建议你阅读文档

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

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