我正在学习Celery,并创建了一个项目来测试我的配置。我根据最新的文档安装了celery==4.0.0
和django-celery-beat==1.0.1
。
在drf_project(带有manage.py的主项目目录)/ drf_project / celery.py中:
from __future__ import absolute_import, unicode_literals
from celery import Celery
import os
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'drf_project.settings')
app = Celery('drf_project')
app.config_from_object('django.conf:settings', namespace='CELERY')
app.autodiscover_tasks()
在drf_project/drf_project/settings.py中
INSTALLED_APPS += ('django_celery_beat',)
CELERYBEAT_SCHEDULE = {
"test_1": {
"task": "tasks.print_test",
"schedule": timedelta(seconds=2),
},
}
在drf_project/drf_project/init.py中。
from __future__ import absolute_import, unicode_literals
from .celery import app as celery_app
__all__ = ['celery_app']
在我的用户管理应用程序(drf_project/user_management/)中,我添加了一个tasks.py文件
from celery import Celery
from time import strftime
app = Celery()
@app.task
def print_test():
print strftime('%Y-%m-%d %H:%M:%S')
with open('abc.txt', 'ab+') as test_file:
test_file.writeline(strftime('%Y-%m-%d %H:%M:%S'))
当我在不同的终端中运行celery worker和Django项目开发服务器时:
celery -A drf_project worker -l info
和
python manage.py runserver
我可以在celery日志中看到我的任务:
[tasks]
. user_management.tasks.print_test
但它没有执行。同时我也没有收到任何错误信息。那么我做错了什么?我遵循了celery的官方文档。