簡體   English   中英

處理非常長時間運行的rake任務

[英]Dealing with very long running rake task

我有興趣運行一個非常長時間運行的rake任務,這個任務需要幾個小時才能完成,我有興趣了解處理這個問題的最佳實踐。

我發現可能的解決方案:

  1. 設置一個cron作業
  2. delayed_job的
  3. resque

cron似乎是一個簡單的設置解決方案,但它是否適合長期任務? 您使用什么以及您的解決方案的優點/缺點是什么?

我個人喜歡Resque,你可以使用resque-scheduler gem處理長時間運行或定期任務。

如果您不必經常運行任務,則可以將rake任務妖魔化,以確保它在SSH會話死亡時繼續運行。

嘗試這樣的事情:

nohup rake my:task &

nohup會將輸出發送到運行任務的目錄中的nohup.out ,並且還會讓你的ssh會話沒有進程死亡,其次&將把它作為deamon運行。

在我創建的一個應用程序中,用戶可以上載在上傳時縮略圖以創建預覽圖像的PDF。 由於PDF可能非常大,縮略圖可能需要一段時間,並且必須在后台運行。 為此,我用過

從好的方面來說,你可以獲得漂亮的Resque GUI來查看你的工作人員,並且你有上帝在那里觀察(並殺死並重新啟動)失控過程(當你處理時往往會發生相當多的過程) ImageMagick中的PDF文件,使整個過程更加穩定可靠。

從負面來看,設置比cron工作要困難得多。 但是讓cron運行一個長期的,內存密集型的進程不受監控似乎對我來說是災難。

希望有所幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM