2009-07-14 59 views
2

我發現我經常必須在我開發的應用程序中實現某種調度器。應用程序可以從簡單的維護任務到相當複雜的任務。你會推薦什麼方法來實現基於web的調度器

到目前爲止,我的方法是設置基本上對排隊命令進行批處理的cron作業。例如,我有cron每5分鐘調用一個腳本(我在RubyOnRails中運行,所以這是一個運行腳本),它檢查是否有任何需要處理的項目,然後將這些任務委派給適當的處理程序。

這有效,但由於某種原因不覺得最好的方法。你能推薦一些東西,或者對此有任何評論嗎?

我在Ruby on Rails中工作,但沒有理由僅限於RoR。

謝謝,

回答

3

許多方法可以做到這一點。對於我們最近開發的一個項目,我們使用了delayed_job,這是一個出色的Rails異步工具工具。我們可以將工作設置爲每5分鐘運行一次,然後該工作完成後再創建另一個工作,等等。

默認情況下,其他工具如BackgroundRB實際上支持cron樣式的工作。

我經常發現做每分鐘一次的rake任務來將新的作業添加到delayed_job中確實很好;你可能想嘗試一下。這是最有彈性的,可以讓你在Ruby中保留所有的定時器邏輯,而不需要像我最初的delayed_job例子那樣的醜陋的黑客或潛在的可破壞的設置(例如,你必須清除工作隊列;你現在必須重新設置所有的工作,以獲得他們好好工作)。

Delayed_job工作起來非常簡單,而且非常容易理解,所以如果你正在尋找某個地方,那麼這個地方可能就是一個好地方。

0

看不出爲什麼你不會使用cron和腳本/亞軍。好處是你沒有你的(額外需要的)Rails環境總是加載,只有當你需要運行這個工作時才加載。

缺點是它取決於cron的存在......?

+0

是的,那是怎樣的一個缺點的。我想這對我自己託管的任何東西都沒有影響,但如果我需要爲客戶提供安裝包,該怎麼辦? – Goro 2009-07-14 22:32:25