2012-09-30 28 views
0

我正在開發一個項目,部署在Django的Heroku上,該項目有12個左右的更新功能。他們需要大約15分鐘跑每個。我們稱它們爲update1(),update2()... update10()。在Django和Heroku中安排更新函數?

我在Heroku上部署了一個工人dyno,我想一次運行n個或更多個(它們不是真的計算密集型,它們都是HTML解析器,但數據是時間敏感的,所以我希望他們儘可能經常打電話)。

我已經閱讀了很多Celery和APScheduler文檔,但我不確定哪一個對我來說最好/最簡單。如果時間相互重疊(即,如果我每2分鐘運行一次,每3分鐘運行一次,還是等到每個結束?),那麼計劃的任務是否同時運行?

任何方式我可以將這些函數,所以他們中至少有一些是同時運行的?本用例的同時呼叫建議數目是多少?

回答

0

根據你的用例描述你不需要一個調度程序,所以APScheduler將不能很好地匹配你的需求。

除了您的工人動態測試儀之外,您還有網絡測功機嗎?這種類型處理的通常設計模式是建立一個接受請求的控制線程或控制進程(你的web dyno)。然後這些請求被放置在請求隊列中。

該隊列由一個或多個工作線程或工作進程(您工作者dyno)讀取。我沒有和芹菜一起工作過,但看起來像是符合你的要求。根據您的描述,您需要多少工人線程或工人測功機難以確定。您還需要指定每秒需要處理的更新請求數量。此外,您需要指定請求是CPU綁定還是IO綁定。