在发布了一个与nginx相关的问题后,我的调查又深入了一点:问题是,merb框架在大约30秒后超时。如果我告诉底层的nginx-server不要超时,merb就会超时,而我找不到一种方法来告诉它不要超时;我需要做一些耗时几分钟的请求。
有什么提示吗?非常感谢。
-更新--
似乎是merb后面的混血儿导致了这个错误。有没有办法改变merb的mongrel-timeout?
发布于 2010-02-10 21:06:15
也许一种不同的方法会产生更好的结果-而不是解决超时,如何通过推迟任务的执行来最大化吞吐量?
对于长时间运行的任务,一些方法是使用run_later或exec单独的工作进程来完成任务...
def run_in_background(r)
Thread.new do
response = IO.popen(r) do |f|
f.read
end
end
end在这两种情况下,您都应该返回URL202 (Accepted)作为状态代码,并返回一个,调用应用程序可以在其中获得状态更新。
我使用这种方法来处理导致后台批处理进程执行的请求。每个都将其开始时间、进度和完成时间写入一个数据库(您可以很容易地使用一个文件)。当URL被调用时,我从数据库获取进度,并将其提供回调用进程。
https://stackoverflow.com/questions/2236878
复制相似问题