動態調度芹菜垮掉的任務,我希望能夠讓我的應用程序的用戶啓動/停止與芹菜節拍週期性的crontab風格的任務。現在我跑西芹與瓶
venv/bin/celery worker -A celery_worker.celery --loglevel=info
我得到了芹菜擊敗這個簡單的例子運行:
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'app.email.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
},
}
CELERY_TIMEZONE = 'UTC'
然後我跑了芹菜拍工作者:
@celery.task
def add(x, y):
return x + y
我的配置文件
celery -A celery_worker.celery beat -s ~/Documents/cesco-automation/power/celerybeat-schedule
它非常完美!但是我需要對日程有更多的控制權。
同樣在我的應用程序的外殼,我能做到這一點。
>>>add.apply_async([80,800],countdown=30)
>>> from datetime import datetime, timedelta
>>> tomorrow = datetime.now() + timedelta(days=1)
>>> add.apply_async(args=[10, 10], eta=tomorrow)
這是偉大的,但我正在開發一個家庭自動化應用程序,所以我也需要停止任務。我該怎麼做呢??
我還發現這link提及有關Django的自定義調度類。這正是我需要的。在Celery docs它提到了-S標誌,但我不知道如何正確地將該類添加到我的Flask應用程序。我如何使用Flask?
我真的需要芹菜垮掉?其他選項還有其他選項嗎? Crontab似乎不夠尖銳。
默認的芹菜調度程序有點勉強。甚至不要讓我開始用它來處理時區。我會用一個數據庫調度程序,可以看看一個Django的http://celery.readthedocs.org/en/latest/userguide/periodic-tasks.html#using-custom-scheduler-classes – reptilicus
我也提到相同的文檔在這個問題上,但不知道如何使它工作。我可以在我的Flask應用程序上使用Django調度程序嗎?怎麼樣? – CESCO
@CESCO,嗨,你有沒有嘗試在燒瓶應用程序中使用django調度程序?如果是,請分享 –