我可以做芹菜自动重新加载本身时,有在模块的变化CELERY_IMPORTS中settings.py.
我试图让母模块检测甚至在子模块上的变化,但它没有检测到子模块的变化.这让我明白芹菜不能递归检测.我在文档中搜索了它,但我没有遇到任何对我的问题的回应.
在我的项目中添加与celery相关的所有内容CELERY_IMPORTS以检测更改时,我真的很烦.
有没有办法告诉芹菜"当项目的任何地方有任何变化时自动重新加载".
谢谢!
我希望能够让我的应用程序的用户启动/停止Celery beat定期的crontab样式任务.现在我用Celery运行
venv/bin/celery worker -A celery_worker.celery --loglevel=info
Run Code Online (Sandbox Code Playgroud)
我用这个简单的例子运行了Celery Beat:
@celery.task
def add(x, y):
return x + y
Run Code Online (Sandbox Code Playgroud)
在我的配置文件中:
CELERYBEAT_SCHEDULE = {
'add-every-30-seconds': {
'task': 'app.email.add',
'schedule': timedelta(seconds=30),
'args': (16, 16)
},
}
CELERY_TIMEZONE = 'UTC'
Run Code Online (Sandbox Code Playgroud)
然后我用Celery击败了Celery
celery -A celery_worker.celery beat -s ~/Documents/cesco-automation/power/celerybeat-schedule
Run Code Online (Sandbox Code Playgroud)
而且效果很好!但我需要更多地控制时间表.
同样在我的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)
Run Code Online (Sandbox Code Playgroud)
这很棒,但我正在开发一个家庭自动化应用程序,所以我还需要停止任务.我该怎么做呢??
我还发现这个链接提及有关Django的自定义调度类.这正是我需要的.在Celery文档中,它提到了-S标志,但我不知道如何正确地将类添加到我的Flask应用程序中.我怎样才能和Flask一起使用?
我真的需要Celery Beat吗?除了crontab还有其他选择吗?Crontab似乎不够锐利.