2010-02-10 35 views
0

在發佈與nginx相關的問題後,我進一步調查了一下:問題是,merb框架在大約30秒後超時。如果我告訴底層的nginx-server不要超時,merb會這樣做,而且我找不到一種方式告訴它不要;我需要處理幾分鐘的請求。告訴Merb不要超時

任何提示?非常感謝。

- 更新 -

似乎Merb的背後是雜種導致錯誤。有什麼辦法可以用merb來改變mongrel-timeout的運行嗎?

回答

1

也許不同的方法會產生更好的結果 - 而不是解決超時問題,如何通過推遲執行任務來最大化吞吐量?

對於長時間運行的任務一些方法要麼使用run_laterEXEC一個獨立的工作進程,完成任務......

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

在這兩種情況下,你應該返回202(已接受)作爲狀態代碼和調用應用程序可以獲取狀態更新的URL。

我使用這種方法來處理導致後臺批處理執行的請求。每個人都會將開始時間,進度和完成時間寫入數據庫(您可以輕鬆使用文件)。當URL被調用時,我從數據庫中獲取進度並將其提供給調用進程。

+0

您好,感謝您的回答,但這不是一個選項,因爲另一個函數正在等待返回值,我不能重寫整個應用程序 – schneck 2010-02-10 14:42:31

+0

沒問題,對不起,我忍不住了。 – 2010-02-12 11:08:08

相關問題