我正在尝试在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]
下注册,但我没有看到任何记录的作业。应该是每秒一个。谁能告诉为什么这不执行?
答案 0 :(得分:1)
我看了你的帖子,看不到你和芹菜一起使用的经纪人的任何评论。 你安装了像Rabbitmq这样的经纪人吗?是运行还是记录某种错误? Celery需要经纪人来发送和接收数据。