Django定时任务之django_apscheduler使用

Django定时任务之django_apscheduler使用

今天在写一个任务需求时需要用到定时任务来做一部分数据处理与优化,于是在了解完现有方法,结合自己需求决定使用django_apscheduler,记录一下过程,有几篇值得参考的文章放在结尾,很多本文未提到之处可详见参考文章。
1、安装插件

pip install django-crontab

2、添加至settings中

INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','django_apscheduler', # 这里...
]

3、migrate一下

python manage.py migrate

会多出两个表,记录定时任务及执行
在这里插入图片描述
4、写定时任务,可以直接写在已有app的views.py文件中,也可以自己新建一个app,放在新建app的views.py文件中,不过有一点需要注意,就是views.py文件得在api中引用才行,否则定时任务无法执行
1)若是写在已有app的views.py文件中,可以直接复制以下代码进行测试

from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_job# 实例化调度器
scheduler = BackgroundScheduler(timezone='Asia/Shanghai')
# 调度器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")@register_job(scheduler, "interval", seconds=5, id="test_func", replace_existing=True, misfire_grace_time=120)
def test_func():print('test')scheduler.start()

2)新建app,这里我新建了一个timedtasks的app,以下是view.py文件的内容,分别有三个job,可以供测试

# Create your views here.from django.http import HttpResponse
import time
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_job, register_eventsimport logging
logger = logging.getLogger('apps')# 实例化调度器
scheduler = BackgroundScheduler(timezone='Asia/Shanghai')
# 调度器使用DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), "default")logger.info('django-apscheduler')# 1.通过 @register_job 类装饰器做法 每间隔5s执行一次
@register_job(scheduler, "interval", seconds=5, args=['job1name'], id='job1', replace_existing=True)
def job1(name):# 具体要执行的代码print('{} 任务运行成功!{}'.format(name, time.strftime("%Y-%m-%d %H:%M:%S")))def job2(name):# 具体要执行的代码print('{} 任务运行成功!{}'.format(name, time.strftime("%Y-%m-%d %H:%M:%S")))def job3(name):print('{} 任务运行成功!{}'.format(name, time.strftime("%Y-%m-%d %H:%M:%S")))# 2.add_job的方式 interval 每间隔10s执行一次
scheduler.add_job(job2, "interval", seconds=10, args=['job2name'], id="job2", replace_existing=True)# 3.add_job的方式 crontab 16点 38分/40分 执行
scheduler.add_job(job3, 'cron', hour='16', minute='38,40', args=['job3name'], id='job3', replace_existing=True)# 监控任务
register_events(scheduler)
# 调度器开始运行
scheduler.start()# 注:必须得注册到API中去才可以,不然定时任务不能注册,不能执行
def testTimedTasks(request):return HttpResponse('ok')

注意,urls.py文件中得引用:

from apps.timedtasks.views import testTimedTasks
urlpatterns = [...,path("test-timed-tasks/", testTimedTasks, name="test-timed-tasks"),
]

简单记录一下流程,如有错误欢迎指正,如有补充欢迎评论!

【参考】https://blog.csdn.net/weixin_42782150/article/details/123212604
【参考】https://blog.csdn.net/hans99812345/article/details/123926503
【参考】https://www.cnblogs.com/leisunny/p/16185169.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/702556.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

大数据构建知识图谱:从技术到实战的完整指南

文章目录 大数据构建知识图谱:从技术到实战的完整指南一、概述二、知识图谱的基础理论定义与分类核心组成历史与发展 三、知识获取与预处理数据源选择数据清洗实体识别 四、知识表示方法知识表示模型RDFOWL属性图模型 本体构建关系提取与表示 五、知识图谱构建技术图…

Java基础常见八股文学习总结1

Java基础常见八股文学习总结1 SPI SPI 即 Service Provider Interface ,字面意思就是:“服务提供者的接口”,我的理解是:专门提供给服务提供者或者扩展框架功能的开发者去使用的一个接口。SPI 将服务接口和具体的服务实现分离开来…

C语言中的数据结构选择与实现

大家好,今天给大家介绍C语言中的数据结构选择与实现,文章末尾附有分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!可进群免费领取。 一、引言 在C语言中,数据结构是实现高效算法的关键。…

一个更好的IP工具箱MyIP

什么是 MyIP ? MyIP 是一个完全开源的 IP 信息查看器,可以轻松检查你的 IP,IP 地理位置,检查 DNS 泄漏,检查 WebRTC 连接,速度测试,ping 测试,MTR 测试,检查网站可用性等…

Codeforces Round 928 G. Vlad and Trouble at MIT

原题链接:Problem - G - Codeforces 题目大意:一颗树,一个n个节点,每个节点上有一种标记,共有三种标记分别是CSP,要求不能让P连接到S,断开一条边的代价为1,最少需要断开几条边&…

docker 安装mysql8 实现互为主从

目录结构 先按照这个目录结构创建。 mysql.conf 配置,mysql的基础可以在此添加 mysql配置 mysql-master下conf配置 [mysqld] # 设置服务器唯一标识号 server-id1 # 启用二进制日志 log-binmaster-bin # 指定需要复制的数据库 binlog-do-dbtest_db # 指定二进制日…

软件游戏显示d3dx9_42.dll丢失的5种解决方法,快速解决dll问题

当计算机系统中d3dx9_42.dll文件丢失时,可能会引发一系列运行问题和功能异常,具体表现形式多样且影响范围较广。首先,对于依赖于DirectX 9.0c版本的各类应用程序,尤其是部分经典的老款游戏,由于d3dx9_42.dll是其中不可…

【Python】OpenCV-图片差异检测与标注

图片差异检测与标注 在图像处理领域中,检测两张图片之间的差异是一项重要的任务。本文将介绍一个使用OpenCV库进行图片差异检测的简单示例代码,并详细注释每个步骤。 1. 引言 图片差异检测是在两张图片之间寻找差异点或区域的过程。这项技术可用于监测…

顺序表知识点——顺序表的增删查改

目录 准备文件 创建顺序表蓝图 顺序表初始化函数接口 顺序表的销毁函数接口 顺序表的打印函数接口 顺序表的插入函数接口 顺序表的删除函数接口 从本节开始, 复习数据结构。 空间复杂度还有时间复杂度之后利用例题学习。 这节先学习顺序表的增删查改。 首…

LeetCode49 字母异位词分组

LeetCode49 字母异位词分组 在这篇博客中,我们将探讨 LeetCode 上的一道经典算法问题:字母异位词分组。这个问题要求将给定的字符串数组中的字母异位词组合在一起,并以任意顺序返回结果列表。 问题描述 给定一个字符串数组 strs&#xff0…

并发编程基础

为什么开发中需要并发编程? 加快响应用户的时间使你的代码模块化、异步化、简单化充分利用CPU资源 基础概念 进程和线程 进程 我们常听说的应用程序,由指令和数据组成。当我们不运行应用程序时,这些应用程序就是放在磁盘上的二进制的代码…

【MATLAB】mlptdenoise信号分解+FFT傅里叶频谱变换组合算法

有意向获取代码,请转文末观看代码获取方式~ 展示出图效果 1 mlptdenoise分解算法 MLPT denoise(Maximum Likelihood Parameter-Tuned Denoise)是一种基于小波变换的信号分解算法,它可以将信号分解为多个具有不同频率特性的小波分…

LeetCode 2859.计算K置位下标对应元素的和

给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。 请你用整数形式返回 nums 中的特定元素之 和 ,这些特定元素满足:其对应下标的二进制表示中恰存在 k 个置位。 整数的二进制表示中的 1 就是这个整数的 置位 。 例如,21 的二进制表示…

Threejs 实现3D影像地图,Json地图,地图下钻

1.使用threejs实现3D影像地图效果,整体效果看起来还可以,底层抽象了基类,实现了通用,对任意省份,城市都可以只替换数据,即可轻松实现效果。 效果如下: 链接https://www.bilibili.com/video/BV1…

Javascript 函数和对象

【六】函数 函数(Function)是一种可重复使用的代码块,用于执行特定的任务或计算,并可以接受参数和返回值。 【1】函数声明 function functionName(parameter1, parameter2, ...) {// 函数体// 执行特定的任务或计算// 可以使用…

H5/CSS 笔试面试考题(91-100)

简述div 元素的哪些 CSS 属性的默认值为 0 ( ) A:border-top-width B:outline-width C:padding-top D:margin-top 面试通过率:76.0% 推荐指数: ★★★ 试题难度: 初级 试题类型: 选择题 答案:c、d 简述下列关于背景定位属性 background-position 说法正确的是 ( ) A:…

嵌入式学习笔记总结Day24

今天进入了下一个阶段的学习——进程与线程的学习 今天主要了解了进程的相关知识以及linux系统中对进程进行控制的一些函数接口 一、概念 程序:存放在外存中的一段数据组成的文件 进程:是一个程序动态执行的过程,包括进程的创建、进程的调度、进程的消…

【人工智能高频面试题--基本篇】

🚀 作者 :“码上有前” 🚀 文章简介 :人工智能高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 人工智能高频面试题--基本篇 1.深度学习和过往的神经网络训练方法有什么区别?列举…

Linux互斥体的驱动程序测试

一. 简介 上一篇文章学习如何在驱动代码中使用互斥锁。文章地址如下: Linux内核中处理并发与竞争的互斥体的驱动实现-CSDN博客 本文对所实现的驱动进行测试。确定互斥锁是否实现对 Led设备的互斥访问,即一次只能一个应用程序访问Led设备。 二. Linux互斥体的驱动程序测试…

LED流水灯实验

#include "reg52.h" #include <intrins.h> //包含函数_crol_,_cror_ typedef unsigned int u16; //对系统默认参数重新定义 typedef unsigned char u8; #define LED_PORT P2 //使用宏定义P2端口 void delay_10…