【发布时间】:2015-09-07 07:20:59
【问题描述】:
我希望能够让我的应用程序用户使用 Celery beat 启动/停止定期 crontab 样式的任务。现在我用
运行 Celeryvenv/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 beat worker
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 一起使用??
我真的需要 Celery Beat 吗?除了 crontab 还有其他选择吗? crontab 似乎不够清晰。
【问题讨论】:
-
默认的 celery 调度程序有点糟糕。甚至不要让我开始用它来处理时区。我会使用数据库调度程序,可以查看 django celery.readthedocs.org/en/latest/userguide/…
-
我在这个问题上提到了同一个文档,但不知道如何使它工作。我可以在我的 Flask 应用程序上使用 Django 调度程序吗?怎么样?
-
@CESCO,嗨,你试过在烧瓶应用程序中使用 django 调度程序吗?如果是,请分享
-
@SaadAbdullah 抱歉,这里没有成功
-
好吧,我找到了一些东西......而且它工作正常......如果有人需要github.com/tuomur/celery_sqlalchemy_scheduler
标签: django python-2.7 flask celery celerybeat