我正在开发一个Rails应用程序。
在视图中,我创建了一个表单,使用remote: true
<%= form_tag({controller: "my_controller", action: "my_method"}, {remote: true}) do %>
每件事都运行正常,但控制器可能需要一段时间来计算结果(有时超过100秒)。
我面临的问题是在本地环境中它工作正常,但在生产环境中,我得到 ERROR 504 GATEWAY_TIMEOUT
有没有办法让它在生产中运作?
答案 0 :(得分:0)
这可能是由于您的rails服务器前面的负载均衡器(可能是apache或nginx)超时响应,因为它花了这么长时间!我最熟悉w / Nginx,所以我会引导你完成修复。
如果在nginx.conf中将响应超时设置为10分钟(600秒):
proxy_connect_timeout 600;
proxy_send_timeout 600;
proxy_read_timeout 600;
send_timeout 600;
然后用service nginx reload
重新启动nginx,你不应再看到504了:)
答案 1 :(得分:0)
你的作品是Heroku吗?你需要把它变成后台工作。根据经验(至少在Heroku上)如果 运行时间超过2秒,则需要在后台工作。
一种简单的方法是使用delayed_job。以下是关于此的开始文档: