2017-08-20 18 views
0

我有一個沉重的函數(大量的計算完成),其輸出個體數量在我的Django項目每個用戶。隨着時間的推移,這個數字會發生一些變化,以便儘量減少我每天運行一次函數的服務器負載,保存輸出並引用輸出。我知道這有點事情通常與Celery處理,但包裝需要大量的現場包和額外的模塊,所以我想過寫一個簡單的功能,如:我應該使用普通的Python代碼還是使用芹菜? Django的。

x0 = #last.time function was called 
x1 = datetime.now 
if x0-x1 > 1 day: 
    def whatever(): 
    .... 
    x0 = datetime.now 
    return .... 

我喜歡讓我的代碼清潔,不安裝的是不是真的需要,所以我想知道是否有任何缺點的「公正」使用Python或任何增益時,我會做到這一點與Celery包。該任務不需要是異步的,所以我不在乎這一點。 Celery應該使用什麼時候,什麼時候不使用,是否有明確的「用例」?是否有性能損失/收益?

我希望有人能正確解釋。

+0

如果你正在運行一個功能,就是沉重的話,我只會建議芹菜。是否只有你想每天運行單個任務? –

回答

1

芹菜是一個明顯的贏家,但我想與利弊解釋這一點。

優點

  • 您可以從Django的控制芹菜很容易。運行芹菜任務,取消任務,檢查任務的狀態/進度可以在django中完成。

  • 芹菜運行的週期性任務很簡單,只需註冊工作從Django的運行芹菜工人,瞧你做。無需亂七八糟的crontab或後臺進程。

  • 芹菜是很容易設置和運行。你可能已經知道,如果你已經通過了芹菜的介紹。

缺點

  • 其中一個缺點是,你需要至少有一個結果後端有任何的Redis,RabbitMQ的或任何其他一個芹菜排隊的目的運行。雖然RabbitMq並不重,但您需要安裝一次。

  • 還有一個是芹菜工人本身會佔用一些內存,但如果你的服務器上,上的本地內存的消耗似乎高到你,也不會是一個問題。

我會建議芹菜,因爲它會讓你更好地控制你的任務,而不是簡單的後臺進程。

+0

非常感謝明確的優點和缺點。我真的不同意「芹菜是非常容易安裝和運行」:d我有閱讀並嘗試了很多,使其運行,但現在,我做到了,我很高興。 – hansTheFranz

相關問題