2016-05-25 24 views
2

我正在開發項目,主要的未來將定期爲每個用戶運行一種類型的異步任務。每個用戶將能夠配置任務(在指定的時間每天運行,每週等)。此外,任務將使用用戶存儲的一些數據。現在我想知道哪種方法應該更好:允許用戶創建自己的PeriodicTask(當然使用一些受限制的端點)或創建單個PeriodicTask(例如每5分鐘運行一次),這將循環遍歷所有用戶並確定任務應該是排隊或不是當前用戶?我想我會用AMPQ作爲經紀人。芹菜PeriodicTask每個用戶

+0

最小時間間隔是每天?或者它低於那個?如果每天都是最低限度,您能設置一個時間爲所有用戶執行任務嗎?就像任務將在凌晨12:00運行一樣,無論用戶何時創建它(如果任務根據用戶設置的時間有效)? –

+0

我編輯的主要帖子是更清晰的 - 用戶也將能夠設置時間,例如,一個用戶可能想要觸發任務約19:30 PM和另一個約11:00上午 –

+1

我認爲這取決於多少延遲是在任務執行中可以容忍。如果5分鐘是可以忍受的,那麼你可以採取單一任務的方式。如果延遲不適合您的情況,那麼您應該爲每個用戶的方法分別執行任務。 –

回答

1

芹菜中的週期性任務調度程序不是爲了處理數千個計劃任務而設計的,因此從性能的角度來看,更好的解決方案是讓一個任務以最小間隔運行(例如,如果允許用戶每天,每週,每月 - 運行的任務,每天就足夠了)

這樣的方法是以及更穩定的 - 每一個時間表的變化,所有的日程記錄被重新加載

加上更安全,因爲你不公開或使用任何內部任務執行機制