2

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

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

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

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

4

1 回答 1

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_job运行resque


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

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

如果您使用 Heroku,我更强烈建议您研究 delay_job、resque 或类似的。您将至少有一名工作人员正在运行来处理队列。HireFire是一项出色的服务,通过仅在您的队列实际上有工作要处理时才启动工作人员来为您节省资金。

于 2013-08-09T03:04:53.450 回答