简体   繁体   English

Django +芹菜 - 为什么我的周期性任务没有运行?

[英]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 beatcelery 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM