为什么芹菜周期性任务不起作用?

时间:2017-05-15 19:12:19

标签: python django celery

我正在尝试在Django应用程序中创建一个周期性任务。

我将此添加到我的settings.py

from datetime import timedelta

CELERYBEAT_SCHEDULE = {
    'get_checkins': {
        'task': 'api.tasks.get_checkins',
        'schedule': timedelta(seconds=1)
    }
}

我刚刚开始使用Celery并且没有想出我想要使用哪个经纪人,所以我也加入了这个,以便暂时绕过经纪人:

if DEBUG:
    CELERY_ALWAYS_EAGER = True

我还在项目文件夹中创建了一个celery.py文件:

from  __future__ import absolute_import, unicode_literals
import os
from celery import Celery

os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'testproject.settings')
app = Celery('testproject')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()

在我的应用程序中,名为api,我创建了一个tasks.py文件:

from celery import shared_task

@shared_task
def get_checkins():
    print('hello from get checkins')

我正在运行这名工作人员并以celery -A testproject worker --beat -l info

击败

它启动正常,我可以看到任务已在[tasks]下注册,但我没有看到任何记录的作业。应该是每秒一个。谁能告诉为什么这不执行?

1 个答案:

答案 0 :(得分:1)

我看了你的帖子,看不到你和芹菜一起使用的经纪人的任何评论。 你安装了像Rabbitmq这样的经纪人吗?是运行还是记录某种错误? Celery需要经纪人来发送和接收数据。

查看此处的文档(http://docs.celeryproject.org/en/latest/getting-started/first-steps-with-celery.html#choosing-a-broker