告诉Merb不要超时

时间:2010-02-10 12:57:27

标签: ruby timeout mongrel merb

在发布了与nginx相关的问题之后,我对我的调查进一步了解:问题是,merb框架在大约30秒后超时。如果我告诉底层的nginx-server不要超时,merb会这样做,而我找不到告诉它的方法;我需要做几分钟的请求。

任何提示?非常感谢。

- 更新 -

似乎merb背后的杂种正在导致错误。有没有办法改变运行merb的mongrel-timeout?

1 个答案:

答案 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时,我从数据库中获取进度并将其提供回调用进程。