2013-04-08 21 views
0

我想設置一些計劃的任務與芹菜託管在一個Django應用程序,在heroku上。除了不知道如何配置所有東西外,最好的方法是什麼?如何排隊計劃的行動

比方說,用戶可以選擇在他們選擇的時間接收每日電子郵件。

我應該有一個計劃的工作,每運行5分鐘。查找每個想要通過電子郵件發送的用戶,然後發送電子郵件?

爲每個用戶安排一項任務,當他們設置他們的偏好時。 (不知道我怎麼實際上實現這一點呢)

回答

1

這取決於你需要多少準確性。你想讓用戶選擇時間到分鐘嗎?第二?或者允許他們選擇他們希望通過電子郵件發送的時間就夠了。

如果在一小時內足夠準確,那麼使用一個任務輪詢用戶每小時發送一次郵件。

如果您的用戶需要將郵件準確發送到第二個郵箱,那麼請爲每個用戶設置一個任務,以便在該時間完成。

中間的一切都歸結爲個人選擇。什麼是你更舒適的做法,更重要的是:什麼產生最簡單的代碼與最少的故障模式

+0

感謝,用戶只需要能夠選擇15分鐘爲增量所以我發射了一個查詢每15分鐘來查找用戶去通過電子郵件發送,然後排隊在芹菜個人電子郵件(至少我認爲這是它是如何工作的!) – speg 2013-04-23 15:39:06

0

我會建議第一個選項(查找優秀作業的計劃作業) - 更容易擴展和管理。如果你有1000個用戶 - 那麼發送電子郵件的任務非常多。

如果您將數據庫用作celery broker,則可以使用django-celery內置的類似cron的調度,這將允許您動態創建和銷燬任務。不過,我不喜歡使用DB作爲我的經紀人。

此外,您可能想看看chronos

+0

您不需要使用您的數據庫作爲經紀人。您可以擁有一個合適的代理,並仍將該數據庫用作celerybeat的後端,從而允許您在管理界面中設置timed/cron任務。 – Thomas 2013-04-24 02:34:16