Django中使用Django-apscheduler执行定时任务
apscheduler不依赖于操作系统,可处理静态任务和动态任务,相较于crontab功能更为强大
一、导包安装模块:
pip install django-apscheduler
二、配置
1)修改settings.py文件,在INSTALLED_APPS中加入
django-apscheduler`应用:
INSTALLED_APPS = [
......
'django_apscheduler',#定时执行任务
]
2)执行迁移命令
python manage.py migrate
三、使用
定时任务会在每次启动Django框架时,伴随启动, 代码如下:
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_events, register_job
# 开启定时工作
try:
# 1.实例化调度器
scheduler = BackgroundScheduler()
# 2.调度器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")
# 3.设置定时任务
# 另一种方式为每天固定时间执行任务,对应代码为
@register_job(scheduler,"cron", hour=4)
def my_job():
# 这里写你要执行的任务
pass
# 4.注册定时任务
register_events(scheduler)
# 5.开启定时任务
scheduler.start()
except Exception as e:
print(e)
# 有错误就停止定时器
scheduler.shutdown()