Django实战项目-学习任务系统-配置定时调度任务
接着上期代码内容,继续完善优化系统功能。
本次增加配置定时调度任务功能,学习任务系统定时任务管理添加的定时学习任务,需要通过配置调度任务,定时发布周期性的学习任务。
以及每天定时发送学生用户属性值,积分值等信息到学生用户知晓。以及其他需要定时调度的任务都可以配置到定时任务中,方便及时提醒自己。
第一步:熟悉Django框架的apscheduler模块
Django-apscheduler是一个基于apscheduler库的Python定时任务调度库,可用于轻松执行定时任务。
它支持三种不同的调度方式:固定时间间隔、固定时间点(日期)和crontab命令。
使用django-apscheduler,您可以轻松设置和管理定时任务,以在预定的时间执行特定的操作。
1,django-apscheduler安装
pip install django-apscheduler
2,修改django项目配置文件
./mysite/mysite/settings.py:
setting.py配置文件的INSTALLED_APPSl里面进行注册
INSTALLED_APPS = (
# ... ...
"django_apscheduler",
)
3,数据迁移
python manage.py migrate
#迁移完成后数据库会创建如下两张表
django_apscheduler_djangojob
django_apscheduler_djangojobexecution
django_apscheduler_djangojob表,用于存储定时任务。

django_apscheduler_djangojobexecution表,用于存储每次的执行记录、执行的时长和执行结果等。
status: 执行状态duration: 执行了多久exception: 是否出现异常

4,简单使用定时器
在views.py中编写代码,当django启动时会自动创建定时任务,或者也可以写在urls.py文件中。
from apscheduler.schedulers.background import BackgroundScheduler def scheduler_test():
print('定时任务触发') # BlockingScheduler() 调度器在主线程中执行, 阻塞当前线程。
# scheduler = BlockingScheduler() # BackgroundScheduler() 调度器在后台执行,不会阻塞当前进程,一般情况使用此方法。
scheduler = BackgroundScheduler try:
# 添加定时任务,第一个参数为需要定时执行的任务,'cron'定时任务类型,每天0点,30分执行一次,任务id为test。
scheduler.add_job(scheduler_test, 'cron', hour=0, minute=30, id='test', replace_existing=True, timezone='Asia/Shanghai')
# 启动定时任务
scheduler.start()
except Exception as e:
print(e)
# 停止定时任务
scheduler.shutdown()
注意:在创建定时任务时,为了确保任务的唯一性和避免重复创建问题,建议指定任务ID。如果没有指定ID,系统会随机生成一个。在多线程环境中,相同任务重复创建的问题可能会更加突出。通过指定ID,当触发add_job时,如果任务已经存在,系统会报错,否则会新创建一个定时任务。这样能够更加高效地管理和执行定时任务。
5,cron定时器参数解释

# 添加定时任务,第一个参数为需要定时执行的任务,'cron'定时任务类型,每天1点,任务id为test。
scheduler.add_job(scheduler_test, 'cron', hour=1, minute=0, id='test', replace_existing=True, timezone='Asia/Shanghai') # 每天9点-17点,每10分钟执行一次。
# scheduler.add_job(create_article_index, 'cron', hour='9-17', minute='0/10', id='test', replace_existing=True, timezone='Asia/Shanghai')
6,interval定时器参数解释

# 添加定时任务,第一个参数为需要定时执行的任务,'interval'定时任务类型,每隔900秒执行一次,任务id为test。
scheduler.add_job(scheduler_test, 'interval', seconds=900, id='test', replace_existing=True, timezone='Asia/Shanghai')
7,date定时器参数解释

# 添加定时任务,第一个参数为需要定时执行的任务,'interval'定时任务类型,2023年7月31日执行一次,任务id为test。
scheduler.add_job(scheduler_test, 'date', run_date=date(2023, 7, 31), id='test', replace_existing=True,timezone='Asia/Shanghai')
8,其他操作
# 删除定时任务
scheduler.remove_job(job_id)
# 暂停定时任务
scheduler.pause_job(job_id)
# 开启定时任务
scheduler.resume_job(job_id)
# 修改定时任务
scheduler.modify_job(job_id)
# 获取所有定时任务
scheduler.get_jobs()
第二步:apscheduler定时任务调度库整合到学习任务系统中
1,编写定时调度任务工具
./mysite/study_system/my_apscheduler.py:
# 更多代码内容请关注weixin公众号: PandaCode辉
2,编写定时任务实现方法
./mysite/study_system/utils.py:
# 更多代码内容请关注weixin公众号: PandaCode辉
第三步:运行测试效果
1,定时发邮件通知,查看最新用户属性信息

2,定时发布学习系统的定时学习任务,同时发邮件通知

-------------------------------------------------end -------------------------------------------------
Django实战项目-学习任务系统-配置定时调度任务的更多相关文章
- Java学习笔记 -- Java定时调度工具Timer类
1 关于 (时间宝贵的小姐姐请跳过) 本教程是基于Java定时任务调度工具详解之Timer篇的学习笔记. 什么是定时任务调度 基于给定的时间点,给定的时间间隔或者给定的执行次数自动执行的任务. 在Ja ...
- 01-Flutter移动电商实战-项目学习记录
一直想系统性的学习一下 Flutter,正好看到该课程<Flutter移动电商实战>的百度云资源,共 69 课时,由于怕自己坚持不下去(经常学着学着就不学了),故采用博客监督以记之. 1. ...
- Django ---- blog项目学习所得
一.登录功能 1.采用ajax 提交form表单的方式 2.后台生成随机验证码,登录时提交验证码 3.用PLI库生成随机验证码,置于session中,登录时与前台提交的code进行upeer()的验证 ...
- Django之项目搭建和配置总结(一)
安装和创建虚拟环境 参考:linux系统下Python虚拟环境的安装和使用 安装Django包 先进入虚拟环境,在联网下执行: pip install django==1.8.7 1.8.7表示dja ...
- SpringMVC+Mybatis+Mysql实战项目学习--环境搭建
1.开发IDE:Spring Tool Suite(自带maven插件) 下载地址https://spring.io/tools/sts/all 在STS.ini配置信息中加下面一行 保证编码格式为u ...
- Node.js实战项目学习系列(1) 初识Node.js
前言 一直想好好学习node.js都是半途而废的状态,这次沉下心来,想好好的学习下node.js.打算写一个系列的文章大概10几篇文章,会一直以实际案例作为贯穿的学习. 什么是node Node.js ...
- Node.js实战项目学习系列(2) 开发环境和调试工具
前言 上一节让我们对Node.js有一个初步的了解,那么现在可以开始正式学习下Node.js的开发了,但是任何一门语言要设计到开发,就必须先学习开发环境以及调试.本文将主要讲解这些内容. 本文涉及到的 ...
- Node.js实战项目学习系列(4) node 对象(global、process进程、debug调试)
前言 在之前的课程我们学习了Node的模块化规则,接下来我们将学习下 Node的几个新特性:global ,process进程,debug调试 global 跟在浏览器中的window一样都是全局变量 ...
- Node.js实战项目学习系列(5) node基础模块 path
前言 前面已经学习了很多跟Node相关的知识,譬如开发环境.CommonJs,那么从现在开始要正式学习node的基本模块了,开始node编程之旅了. path path 模块提供用于处理文件路径和目录 ...
- 通过Quartz 配置定时调度任务:使用cron表达式配置时间点
Cron官网入口 在后台经常需要一些定时处理的任务,比如微信相关应用所需的access_token,就要定时刷新,官方返回的有效性是7200s,也就是2小时,但是为了保险起见,除了在发现access_ ...
随机推荐
- 【漏洞分析】20250105-SorraStaking:奖励金额计算错误,每次取款都有大收益
背景信息 2024-12-21 11:58:11 (UTC) 准备交易:https://app.blocksec.com/explorer/tx/eth/0x72a252277e30ea6a37d2d ...
- 如何监控Linux服务器资源使用情况
--- 好的方法很多,我们先掌握一种 --- [背景] 在做性能验证时(其他情况通用),需要监控服务器资源的使用情况,例如cpu,内存等信息 我们就可以简单通过shell脚本后台运行,持续监控需要 ...
- uwp 图片剪切
public async void BitmapTransformAndSaveTest() { var uncroppedfile = await Windows.Storage.Applicati ...
- MAC安装redis的简单方法
part 1:安装redis1.官网下载压缩包https://redis.io/download or brew install redis(太慢了-)我此处选的法一,先去官网上下载包,在解压使用. ...
- MongoDB:分页查询(统计查询和分页列表查询)、排序查询、正则的复杂条件查询、比较查询、包含查询、条件连接查询
- RocketMQ原理—1.RocketMQ整体运行原理
大纲 1.RocketMQ整体运行原理的介绍顺序 2.RocketMQ生产者是如何发送消息的 3.Broker是如何持久化接收到的消息到磁盘上 4.基于DLedger技术的Broker主从同步原理 5 ...
- .net core使用Nacos注册中心
一.前言 好久不见~复工第一更 本文仅参考Nacos快速开始,实现Windows本机单节点测试部署Nacos服务,不适用于生产环境. Nacos是实现动态服务发现.配置管理和服务管理平台的项目,由阿里 ...
- S3基准测试工具 - Warp使用简介
本文分享自天翼云开发者社区<S3基准测试工具 - Warp使用简介>,作者:y****n 1.Warp⼯具简介 warp 是⼀款开源的S3基准测试⼯具,开源S3项⽬minio下的⼀个⼦项⽬ ...
- dart 数组去重
List list = ['1','2','3','3']; list = list.toSet().toList();
- DeepSeek + 在线Excel , 打造智能表格新纪元
微信搜一搜[葡萄城社区]关注,了解更多动态 SpreadJS 已经接入 DeepSeek 啦! 相信这段时间,大家都被[DeepSeek]刷屏了.DeepSeek 以其强大的技术能力和创新的解决方案, ...