我有興趣運行一個很長時間的耙子任務,需要幾小時才能完成,我有興趣瞭解處理這個問題的最佳實踐。處理很長時間的耙子任務
可能的解決方案,我發現:
- 設置cron作業
- delayed_job的
- resque
的cron似乎是一個簡單的解決方案來建立,但它是理想的一個很長的任務?你使用什麼,你的解決方案有哪些優點/缺點?
我有興趣運行一個很長時間的耙子任務,需要幾小時才能完成,我有興趣瞭解處理這個問題的最佳實踐。處理很長時間的耙子任務
可能的解決方案,我發現:
的cron似乎是一個簡單的解決方案來建立,但它是理想的一個很長的任務?你使用什麼,你的解決方案有哪些優點/缺點?
我個人喜歡Resque,你可以使用resque-scheduler gem來處理長時間運行或週期性任務。
如果你不需要經常運行你的任務,你可以將rake任務妖魔化,以確保它在SSH會話死亡或者其他情況下繼續運行。
嘗試是這樣的:
nohup rake my:task &
nohup
將輸出發送到nohup.out
在您運行任務的目錄,也將讓留下您的SSH會話,而過程中死亡,其次是&
將運行它作爲一個deamon。
在我創建的一個應用程序中,用戶可以上傳上傳時縮略圖創建預覽圖像的PDF文件。由於PDF可能非常大,縮略圖可能需要一段時間,並且必須在後臺運行。要做到這一點,我用
從積極的一面,你會得到漂亮Resque GUI在行動查看你的員工,你已經有了上帝那裏觀看(並殺死,並重新啓動)失控的進程(這往往發生相當當你在ImageMagick中處理PDF時),使整個事情更加穩定和可靠。
從負面來看,這比建立cron工作困難得多。但是讓cron運行一個長時間的,不受監控的內存密集型進程似乎對我來說是一場災難。
希望有幫助!
這看起來好像完全符合我的需求。在接受其他人的意見之前,我會先保留這個問題一段時間。謝謝! – 2012-03-26 18:42:24
沒有問題!我希望你找到你正在尋找的解決方案!一旦找到它就發佈你的解決方案! – 2012-03-26 20:24:45