通过admin配置定时任务

通过admin配置定时任务.jpg

通过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后台设置任务即可

需要注意:周期性任务里面的开始时间和结束时间不需要勾选,不然会报错。

posted @ 2024-05-29 18:19  小满三岁啦  阅读(24)  评论(0编辑  收藏  举报