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 beatcelery 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