【问题标题】:Tell Merb not to timeout告诉 Merb 不要超时
【发布时间】:2010-02-10 12:57:26
【问题描述】:

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

有什么提示吗?非常感谢。

-- 更新--

似乎是merb后面的mongrel导致了错误。有什么办法可以改变使用 merb 运行的 mongrel-timeout 吗?

【问题讨论】:

    标签: ruby timeout mongrel merb


    【解决方案1】:

    也许不同的方法会产生更好的结果 - 与其解决超时问题,不如通过推迟任务的执行来最大化吞吐量?

    对于长时间运行的任务,一些方法是使用 run_laterexec 单独的工作进程来完成任务...

    def run_in_background(r)
        Thread.new do
            response = IO.popen(r) do |f|
                f.read
            end
        end
    end
    

    在这两种情况下,您都应该返回 202 (Accepted) 作为状态代码和调用应用程序可以获取状态更新的 URL。

    我使用这种方法来处理导致后台批处理执行的请求。每个都将它的开始时间、进度和完成时间写入数据库(您可以轻松地使用文件)。调用 URL 时,我从数据库中获取进度并将其提供给调用进程。

    【讨论】:

    • 您好,感谢您的回答,但这不是一个选项,因为另一个函数正在等待返回值,我无法重写整个应用程序
    • 没问题,抱歉我帮不上忙。
    猜你喜欢
    • 1970-01-01
    • 2020-02-09
    • 2020-04-02
    • 2011-03-02
    • 2013-12-28
    • 2011-08-02
    • 2012-12-11
    • 2010-12-19
    相关资源
    最近更新 更多