1

我们有以下情况:

  1. 我们调用一个在控制器中运行动作的 url。该操作运行时间相当长 - 它构建一个大的 XML 字符串,生成一个 PDF,并且应该在完成后重定向。

  2. 大约 60 秒后,浏览器得到 200,但内容类型为“application/x-unknown-content-type”,没有正文,也没有响应标头(使用 Tamper 查看标头)

  3. 控制器操作实际上继续运行到完成,生成 PDF

这发生在我们的 prod 环境中,在将控制器操作分阶段运行到完成时,按预期重定向。

有什么建议去哪里看吗?

我们在 Apache/Phusion Passenger 上运行 Rails 2.2.2。

谢谢,

4

2 回答 2

1

我不是 100% 确定,但可能您的 Apache 超时了对 Rails 应用程序的请求。您可以尝试将 Apache 的 Timeout 指令设置得更高吗?就像是:

Timeout 120
于 2009-04-16T18:15:49.087 回答
1

我会考虑将此任务放到作业队列中并立即返回,而不是让用户坐下来等待。否则,当很多人尝试使用它并且您用完了可用的 Rails 应用程序实例来处理任何新连接时,您将面临一个问题的世界。

轻松做到这一点的一种方法可能是使用 Ajax 发布来触发创建文档,将其放入延迟作业中,然后通过 ajax 运行 10 秒的定期检查,通知等待用户的作业状态。一旦delayed_job 在后台完成了您的任务并更新了数据库中的某些内容以表明它已完成,那么您可以通过ajax 将用户重定向到新创建的文档。

于 2009-05-08T23:33:26.730 回答