生产中超时,但在本地轨道中不超时



我正在开发一个Rails应用程序。

在视图中,我制作了一个表单,该表单通过使用remote: true将操作发送到 AJAX 中的控制器

<%= form_tag({controller: "my_controller", action: "my_method"}, {remote: true}) do %>

一切都工作正常,但控制器可能需要一段时间来计算结果(有时超过 100 秒(。

面临的问题是在本地环境中它工作正常,但在生产环境中,我收到错误 504 GATEWAY_TIMEOUT

有没有办法让它在生产中工作?

这可能是由于您的 rails 服务器前面的负载均衡器(可能是 apache 或 nginx(使响应超时,因为它需要很长时间! 我最熟悉的是 Nginx,所以我将引导您完成那里的修复。


如果在 nginx.conf 中将响应超时设置为 10 分钟(600 秒(:

proxy_connect_timeout       600;
proxy_send_timeout          600;
proxy_read_timeout          600;
send_timeout                600;

然后重新启动nginx,service nginx reload你不应该再看到504了:)

你的生产是Heroku吗?您需要将其放入后台作业中。根据经验(至少在 Heroku 上(,如果它可以运行超过 2 秒,则需要在后台作业中。

一个简单的方法是使用delayed_job。以下是这方面的起始文档:

活动作业基础知识

相关内容

  • 没有找到相关文章

最新更新