我们有以下情况:
我们调用一个在控制器中运行动作的URL。该操作运行相当长 - 它构建了一个大的XML字符串,生成了一个PDF,并且在完成后应该重定向。
60秒左右后,浏览器得到200,但内容类型为“application / x-unknown-content-type”没有正文,没有响应标题(使用Tamper查看标题)
控制器操作实际上继续运行完成,生成PDF
这发生在我们的prod环境中,在暂存控制器操作运行完成时,按预期重定向。
有什么建议吗?
我们在Apache / Phusion Passenger上运行Rails 2.2.2。
谢谢,
答案 0 :(得分:1)
我不是100%肯定,但可能你的Apache超时了Rails应用程序的请求。你能尝试将Apache的Timeout指令设置得更高吗?类似的东西:
Timeout 120
答案 1 :(得分:1)
我会考虑将此任务交给作业队列并立即返回而不是让用户坐下来等待。否则,当许多人尝试使用此问题并且您用尽可用的rails应用程序实例来处理任何新连接时,您将面临一个充满问题的世界。
轻松完成此操作的一种方法可能是使用Ajax帖子触发创建文档,将其放入Delayed Job,然后通过ajax运行10秒定期检查,通知等待用户作业状态。一旦delayed_job在后台完成处理任务并更新了数据库中的某些内容以表明它已完成,那么您可以通过ajax将用户重定向到新创建的文档。