[英]Dynamically Schedule Celery Beat task with Flask
我希望能夠讓我的應用程序的用戶啟動/停止Celery beat定期的crontab樣式任務。 現在我用Celery運行
venv/bin/celery worker -A celery_worker.celery --loglevel=info
我用這個簡單的例子運行了Celery Beat:
@celery.task
def add(x, y):
return x + y
在我的配置文件中:
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'app.email.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
},
}
CELERY_TIMEZONE = 'UTC'
然后我用Celery擊敗了Celery
celery -A celery_worker.celery beat -s ~/Documents/cesco-automation/power/celerybeat-schedule
而且效果很好! 但我需要更多地控制時間表。
同樣在我的app shell上,我能夠做到這一點。
>>>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)
這很棒,但我正在開發一個家庭自動化應用程序,所以我還需要停止任務。 我該怎么做呢??
我還發現這個鏈接提及有關Django的自定義調度類。 這正是我需要的。 在Celery文檔中,它提到了-S標志,但我不知道如何正確地將類添加到我的Flask應用程序中。 我怎樣才能和Flask一起使用?
我真的需要Celery Beat嗎? 除了crontab還有其他選擇嗎? Crontab似乎不夠銳利。
此功能將在Celery ver.4.0中提供。 動態任務調度目前僅在開發版本中受支持: http : //docs.celeryproject.org/en/master/userguide/periodic-tasks.html#beat-entries
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.