[英]Django + celery - why my periodic task in not running?
I'm working in a periodic task using django + celery. 我正在使用django + celery进行定期任务。 My project has django-celery==3.1.17, the broker used is Redis and it is working.
我的项目有django-celery == 3.1.17,使用的代理是Redis,它正在工作。
In my settings file: 在我的设置文件中:
CELERYBEAT_SCHEDULE={
'delivery_send': {
'task': 'delivery.tasks.DeliverySendTask',
'schedule': timedelta(minutes=1),
'args': [],
},
}
CELERY_ROUTES = {
'delivery.tasks.DeliverySendTask': {
'queue': 'periodic_tasks',
'routing_key': 'periodic_tasks'
},
}
There are more celery settings, but I guess these two are the most relevant for this question. 有更多的芹菜设置,但我想这两个与这个问题最相关。
The task: 任务:
class DeliverySendTask(Task):
def run(self, *args, **kwargs):
logger.info('executing task!')
from .models import Dispatch
Dispatch.objects.all().delete()
Then I run python manage.py celery beat
and see in the console 然后我运行
python manage.py celery beat
并在控制台中查看
[2016-06-23 14:32:01,230: INFO/MainProcess] Scheduler: Sending due task delivery_send (delivery.tasks.DeliverySendTask)
But the delete is never actually executed. 但删除从未实际执行过。 What am I missing?
我错过了什么?
Thanks for any help. 谢谢你的帮助。
celery beat does not execute tasks. 芹菜殴打不执行任务。 Only schedule tasks into queue.
仅将任务计划到队列中。
celery worker
executes tasks. celery worker
执行任务。
To execute tasks periodically you have to start both celery beat
and celery worker
. 要定期执行任务,你必须开始
celery beat
和celery worker
。
python manage.py celery beat
python manage.py celery worker
Install celery too. 也安装芹菜。 Then dont run it with manage.py.
然后不要用manage.py运行它。 Run it like this:
像这样运行:
celery -A your_app_name worker -l info -B -E
so without python manage.py 所以没有python manage.py
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.