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_ ...
随机推荐
- [转]分享几款微软官方Office卸载工具与使用方法
更换Office版本时,需要先卸载旧版Office,如果是卸载普通软件,我们只需在"控制面板"里点击"卸载"就能轻松实现,但这种方法对卸载Office 可能无效 ...
- 基于开源IM即时通讯框架MobileIMSDK:RainbowChat v11.0版已发布
关于MobileIMSDK MobileIMSDK 是一套专门为移动端开发的开源IM即时通讯框架,超轻量级.高度提炼,一套API优雅支持UDP .TCP .WebSocket 三种协议,支持iOS.A ...
- 搞懂现代Web端即时通讯技术一文就够:WebSocket、socket.io、SSE
本文引用自" 豆米博客"的<JS实时通信三把斧>系列文章,有优化和改动. 1.引言 有关Web端即时通讯技术的文章我已整理过很多篇,阅读过的读者可能都很熟悉,早期的We ...
- kubernetes系列(二) - kubectl的入门操作
目录 1. 安装 / 卸载 1 .1 前提条件 1.2 安装方式 1.3 卸载 2. 通过 minikube 学习 k8s 实操基础 2.1 创建集群 2.2 部署应用 2.3 探索当前应用[故障排除 ...
- PostGIS数据库操作简介
PostGIS数据库操作简介 PostGIS Docker安装 docker pull postgis/postgis docker run --name postgis -e POSTGRES_PA ...
- CDS标准视图:维护策略描述 I_MaintStrategyTextData
视图名称:维护策略描述 I_MaintStrategyTextData 视图类型:基础视图 视图代码: 点击查看代码 @EndUserText.label: 'Maintenance Strategy ...
- 第六章 ArrayBlockingQueue源码解析
1.对于ArrayBlockingQueue需要掌握以下几点 创建 入队(添加元素) 出队(删除元素) 2.创建 public ArrayBlockingQueue(int capacity, boo ...
- ElasticSearch入门 第二篇
集群配置----------------------------- ElasticSearch共有两个配置文件,都位于config目录下,分别是elasticsearch.yml和logging.ym ...
- Java Spring Cloud Nacos 配置修改不生效的解决方法
一.引言 在微服务架构中,配置管理是一个关键部分.Nacos作为一个动态服务发现.配置管理和服务管理平台,广泛应用于Java Spring Cloud项目中.然而,有时在修改Nacos配置后,这些更改 ...
- 原生js元素拖动效果
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...