我們的rails web應用程序必須通過瀏覽器下載/解壓縮包含ftp html文件的請求,以便用戶通過瀏覽器查看。在rails中立即並行執行的後臺任務
歸檔文件可能很大,所以用戶必須等到它在服務器上下載/解包。
我實現了進度條的方式,我在用戶的請求中調用fork/Process.detach,以便他的請求完成,但下載/解包過程繼續在後臺運行。並且在瀏覽器中呈現的JavaScript向我們的服務器發送狀態,直到所有內容都準備好,然後將其重定向到解壓縮的html頁面。
只要用戶請求一個檔案,一切都會順利進行,但是如果他試圖同時運行2個或更多個請求(這樣可以啓動更多分支),似乎只有其中一個完成了,而且休息到期/超時/被乘客殺死(?)。我想這是Passenger/forking的問題。
我不確定它是否有可能修復它,所以我想我需要切換到另一個解決方案。該解決方案需要允許立即並行處理下載。因此如果用戶請求多個檔案,他必須同時看到所有這些檔案的下載/解壓縮進度。
我正在考慮立即運行後臺耙工作,但它似乎啓動速度很慢(我們的服務器上每分鐘都有很多cron rake任務發生)。我喜歡fork的原因是它開始非常快。我知道有延遲的工作,我們也將其用於其他任務。但它可以立即啓動多個進程,而不需要排隊?