Ruby on rails 生产中超时,但本地Rails中不超时
我正在开发一个Rails应用程序 在视图中,我使用Ruby on rails 生产中超时,但本地Rails中不超时,ruby-on-rails,ajax,forms,timeout,Ruby On Rails,Ajax,Forms,Timeout,我正在开发一个Rails应用程序 在视图中,我使用remote:true <%= form_tag({controller: "my_controller", action: "my_method"}, {remote: true}) do %> 每件事都很好,但控制器可能需要一段时间来计算de结果(有时超过100秒) 我面临的问题是,在本地环境中,它工作正常,但在生产环境中,我遇到了错误504 GATEWAY\u TIMEOUT 有没有办法让它在生产中发挥作用 这可能是因为r
remote:true
<%= form_tag({controller: "my_controller", action: "my_method"}, {remote: true}) do %>
每件事都很好,但控制器可能需要一段时间来计算de结果(有时超过100秒)
我面临的问题是,在本地环境中,它工作正常,但在生产环境中,我遇到了错误504 GATEWAY\u TIMEOUT
有没有办法让它在生产中发挥作用 这可能是因为rails服务器前面的负载平衡器(可能是apache或nginx)超时了响应,因为这需要很长时间!我最熟悉的是w/Nginx,所以我将带您完成修复
如果在nginx.conf中将响应超时设置为10分钟(600秒):
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
然后使用
服务重新启动nginx nginx reload
您不应该再看到504s:)您的产品是Heroku吗?你需要把它放到后台工作中去。根据经验(至少在Heroku上),如果运行时间超过2秒,则需要在后台作业中运行
一个简单的方法就是延迟工作。以下是关于以下内容的起始文档:
您可能应该使用sidekiq或delayed_job之类的工具将该功能置于后台作业之后。这就是他们的全部目的。你们生产的服务器堆栈是什么?它是Puma+Nginx+PostgreSQL