通过admin配置定时任务
通过admin配置定时任务
安装包
pip install django-celery-beat
# 使用这个的前提是你已经安装了其他包了
pip install Django
pip install celery
pip install redis
pip install eventlet
去app中注册
INSTALLED_APPS = [
# 其他包
"django_celery_beat",
]
屏蔽掉原来的调度器
CELERY_BEAT_SCHEDULER = 'django_celery_beat.schedulers.DatabaseScheduler'
设置时区
参考文章
https://blog.csdn.net/qq_41341757/article/details/109319850
https://www.jianshu.com/p/39fa4ac3a236
注意:周期性任务内的开始时间不需要设置。
# 方案1
LANGUAGE_CODE = "zh-hans"
TIME_ZONE = "Asia/Shanghai"
USE_I18N = True
USE_TZ = True
# django中推荐使用USE_TZ = True,让数据库存储0时区时间
# USE_TZ = True,和 TIME_ZONE = ‘Asia/Shanghai’ # 亚洲上海必须设置。
# -------------------------------------------------------------------
# 方案2
LANGUAGE_CODE = "zh-hans"
TIME_ZONE = "Asia/Shanghai"
USE_I18N = True
USE_TZ = False
CELERY_DJANGO_CELERY_BEAT_TZ_AWARE = False
# 方案2说明
# 1 SETTINGS USE_TZ=FALSE时添加该选项,否启动 DJANGO CELERY BEAT 的时候会出现这个错误
# TYPEERROR: CAN'T COMPARE OFFSET-NAIVE AND OFFSET-AWARE DATETIMES
# 2 时间需要手动减去8个小时
迁移数据库
python manage.py migrate django_celery_beat # 写上app名称单独迁移某一个数据库
# 这一步操作之后,可以进入admin后台查看到 周期性任务
在控制台启动worker和beat
celery -A luffy_api.celery1 worker -l debug -P eventlet
celery -A luffy_api.celery1 beat -l debug
在django-admin后台设置任务即可
需要注意:周期性任务里面的开始时间和结束时间不需要勾选,不然会报错。