定时触发任务的步骤如下:
1 在settings.py中增加APP
INSTALLED_APPS = [ # ... 'django_celery_results', 'django_celery_beat', ]
2 在settings.py中修改结果存储
为了更直观的看到定时任务的效果,结果暂时不保存在redis数据库中,而是保存在关系数据库中。故先修改结果存储。
CELERY_BROKER_URL = 'redis://:cgl139@172.17.0.11:5379/26' # Broker配置,使用Redis作为消息中间件 CELERY_RESULT_BACKEND = 'django-db' # BACKEND配置,这里使用django-db CELERY_RESULT_SERIALIZER = 'json' # 结果序列化方案
3 执行数据迁移
python manage.py migrate
这时候,我们查看数据库,可以看到多了很多表,其中有一个就是结果存储表。
4 创建用户
python manage.py createsuperuser
5 发布到服务器
# 查看81端口的占用情况 lsof -i:81 # 释放81端口的占用 kill -9 pid # 释放celery进程 pkill -f celery -9 # 发布工程 python manage.py runserver 0.0.0.0:81 & ctrl+c # 启用beta调度,CeleryDemo是工程名 celery -A CeleryDemo beat -l info --scheduler django_celery_beat.schedulers:DatabaseScheduler & # 启动worker任务 celery worker -A CeleryDemo -l info
6 远程登录admin
配置好任务后,就该检查任务执行情况了。
7 检查后台任务表
可以看到,这个任务每分钟执行了一次。
8 检查控制台
我们在add函数中,每执行一次控制台打印了一条记录。