在发布了与nginx相关的问题之后,我对我的调查进一步了解:问题是,merb框架在大约30秒后超时。如果我告诉底层的nginx-server不要超时,merb会这样做,而我找不到告诉它的方法;我需要做几分钟的请求。
任何提示?非常感谢。
- 更新 -
似乎merb背后的杂种正在导致错误。有没有办法改变运行merb的mongrel-timeout?
答案 0 :(得分:1)
也许一种不同的方法会产生更好的结果 - 而不是解决超时问题,如何通过推迟执行任务来最大化吞吐量?
长期运行任务的一些方法是使用 run_later 或 exec 单独的工作进程来完成任务......
def run_in_background(r)
Thread.new do
response = IO.popen(r) do |f|
f.read
end
end
end
在这两种情况下,您都应该返回 202(接受)作为状态代码和调用应用程序可以获取状态更新的URL。
我使用此方法来处理导致后台批处理执行的请求。每个都将它的开始时间,进度和完成时间写入数据库(您可以轻松使用文件)。调用URL时,我从数据库中获取进度并将其提供回调用进程。