2011-06-08 67 views
9

我曾經感興趣的東西是定期運行一系列定期的活動。很明顯,這是cron的任務,對吧?計劃一個常規事件:Cron/Cron的替代品(包括芹菜)

不幸的是,互聯網似乎有點不同意。

讓我詳細介紹一下我的設置。首先,我的開發環境在Windows中,而我的生產環境託管在Webfaction(Linux)上。 Windows上沒有真正的cron,對吧?另外,我使用Django!什麼建議Django?

Celery當然!不幸的是,設立芹菜對我來說或多或少是一場真正的噩夢 - 請參閱Error message 'No handlers could be found for logger 「multiprocessing」' using Celery。這只是我和芹菜有過的一個問題。其他包括一個套接字錯誤,我是唯一一個得到這個問題的人。

不要誤解我的意思,芹菜似乎真的很酷。不幸的是,似乎缺乏支持,並且在其首選後端RabbitMQ中內置了一些奇怪的限制。不幸的是,無論程序有多酷,如果它不起作用,那它就行不通了!

這就是我希望你們都可以進來的地方。我想知道關於cron或cron的等價物,它可以在Windows和Linux環境中以類似的方式設置(最好是相同的)。

(我一直在掙扎芹菜大約兩個星期,不幸的是,我認爲現在是時候在毛巾折騰而放棄它,至少現在是這樣。)

+1

你爲什麼要在Windows上開發,但在Linux上部署?看起來你正在爲自己設置這樣的許多頭痛。 – 2011-06-08 13:43:49

+0

不完全是我的選擇。我考慮過更換我的一臺計算機或對其進行分區,但最終會出現它自己的相同問題。只是想盡可能地利用現在的情況。 – RHH 2011-06-08 15:47:29

+1

五筆安裝程序使您可以輕鬆地雙啓動到Ubuntu現在。 – goh 2011-08-24 04:56:16

回答

11

一個簡單的,非芹菜處理事情的方法是創建Django custom management commands來執行您的異步或計劃任務。

然後,在Windows上,使用at命令來安排這些任務。在Linux上,您使用cron

我也強烈建議開溝Windows,如果你可以開發環境。在Linux或Mac OSX上,你的生活將會變得更加美好。以Ubuntu爲例重新使用備用或舊機器,或者在Windows機器上的VM中運行Ubuntu。

14

我有同樣的問題,並試圖用芹菜(太複雜)或cron(外部應用程序)來解決它,最終發現Advanced Python Scheduler。只是剛開始使用它,但它看起來相當成熟和穩定,具有體面的文檔,並將採取一些調度格式(如cron風格)。

documentation開始,以特定間隔運行一個函數。

from apscheduler.scheduler import Scheduler 
sched = Scheduler() 
sched.start() 
def hello_world(): 
    print "hello world" 
sched.add_interval_job(hello_world,seconds=10) 

這是不可阻擋的,我跑的東西簡單地從我urls.py導入模塊相當一致。希望這可以幫助。

0

Django Chronograph是一個很好的選擇。你只需要設置一個cron,然後在django admin中執行所有操作。您可以安排django管理的任務/命令。