我的应用程序建立在轨道上,Web服务器是puma。
我需要从数据库加载数据,加载所有数据需要 60 多秒。每次向服务器发送 get 请求时,我都必须等待 60 秒以上。
请求获取的超时时间为 60 秒,所以我总是得到 504 网关超时。我在 puma 配置中找不到更改请求超时的位置。如何将请求超时设置为超过 60 秒?
谢谢!
更新:显然worker_timeout不是答案,因为它与整个过程有关,而不仅仅是单个请求。所以这似乎是Puma不支持的东西,开发人员希望你用Puma前面的任何东西来实现它,比如Nginx。
原文:Rails本身不会超时,但如果你运行的是Puma,请在config/puma.rb
中使用worker_timeout。例:
worker_timeout (246060( 如果 ENV['RAILS_ENV']=='发展'
源
这里的504错误是rails服务器前面的网关,例如它可能是Cloudflare或nginx等。
所以设置会在那里。你必须增加那里的超时,以及rails/puma。
最好是优化代码和查询,以便在更快的持续时间内做出响应,以便在生产环境中不会出现应用程序上出现大量流量的瓶颈。
如果您确实想增加响应时间,则可以使用机架超时来执行此操作:
https://github.com/kch/rack-timeout