Django + celery - 为什么我的周期性任务不是 运行?
Django + celery - why my periodic task in not running?
我正在使用 django + celery 进行定期任务。我的项目有django-celery==3.1.17,使用的broker是Redis,可以正常工作。
在我的设置文件中:
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'
},
}
芹菜设置更多,但我想这两个与这个问题最相关。
任务:
class DeliverySendTask(Task):
def run(self, *args, **kwargs):
logger.info('executing task!')
from .models import Dispatch
Dispatch.objects.all().delete()
然后我运行python manage.py celery beat
然后在控制台看到
[2016-06-23 14:32:01,230: INFO/MainProcess] Scheduler: Sending due task delivery_send (delivery.tasks.DeliverySendTask)
但是删除从未真正执行过。我错过了什么?
感谢您的帮助。
celery beat 不执行任务。仅将任务安排到队列中。 celery worker
执行任务。
要定期执行任务,您必须同时启动 celery beat
和 celery worker
。
python manage.py celery beat
python manage.py celery worker
也安装芹菜。然后不要 运行 它与 manage.py。 运行 像这样:
celery -A your_app_name worker -l info -B -E
所以没有 python manage.py
我正在使用 django + celery 进行定期任务。我的项目有django-celery==3.1.17,使用的broker是Redis,可以正常工作。
在我的设置文件中:
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'
},
}
芹菜设置更多,但我想这两个与这个问题最相关。
任务:
class DeliverySendTask(Task):
def run(self, *args, **kwargs):
logger.info('executing task!')
from .models import Dispatch
Dispatch.objects.all().delete()
然后我运行python manage.py celery beat
然后在控制台看到
[2016-06-23 14:32:01,230: INFO/MainProcess] Scheduler: Sending due task delivery_send (delivery.tasks.DeliverySendTask)
但是删除从未真正执行过。我错过了什么?
感谢您的帮助。
celery beat 不执行任务。仅将任务安排到队列中。 celery worker
执行任务。
要定期执行任务,您必须同时启动 celery beat
和 celery worker
。
python manage.py celery beat
python manage.py celery worker
也安装芹菜。然后不要 运行 它与 manage.py。 运行 像这样:
celery -A your_app_name worker -l info -B -E
所以没有 python manage.py