Django使用django-apscheduler实现定时任务

定时任务可以在后台定时执行指定的代码,避免了很多人为操作。下面是在Django项目中如何使用定时任务的具体操作流程。

我在这里使用的 django-apscheduler库来实现定时任务。

一、安装 django-apscheduler

pip install django-apscheduler

二、在项目的setting.py文件中修改配置

在INSTALLED_APPS 中添加 django_apscheduler 项。

三、通过命令生成定时任务记录表

在项目根目录,分别执行以下命令

1、根据数据库模型生成迁移文件

python manage.py makemigrations

2、执行迁移文件

python manage.py migrate

执行完以上两个命令后,在默认的数据库中会生成两个表,django_apscheduler_djangojobexecution 和 django_apscheduler_djangojob.

四、我一般是在项目中新建一个py文件,将所有需要定时执行的任务都保存在这个文件中。

比如我在项目的until目录中新建一个time.py文件。

打开这个文件将以下代码复制到文件中。

from django.shortcuts import render# Create your views here.
from apscheduler.schedulers.background import BackgroundScheduler
from django_apscheduler.jobstores import DjangoJobStore, register_job
from until import logg
from app1 import tests# 实例化调度器
scheduler = BackgroundScheduler()
# 调度器使用默认的DjangoJobStore()
scheduler.add_jobstore(DjangoJobStore(), 'default')# 30秒循环执行
@register_job(scheduler, 'interval', id='test', seconds=30,args=['test'], replace_existing=True)
def test(s):tests.adddata()logg.info("30秒到了,开始执行")# 每天八点半定时执行
@register_job(scheduler, 'cron', id='test1',hour=8, minute=30, args=['test'], replace_existing=True)
def test1(s):logg.info("开始执行")# 单次定时执行
@register_job(scheduler, 'date', id='test2', run_date='2024-06-10 06:06:06',args=['test'], replace_existing=True)
def test2(s):logg.info("30秒到了,开始执行")# 注册定时任务并开始
scheduler.start()

根据注释修改对应的定时任务和所要执行的方法就行。

主要的配置是触发器中的时间配置。可以参考以下参数。

  • date:任务只会执行一次。特定的时间点触发。
run_date (datetime 或 str) 作业的运行日期或时间
timezone (datetime.tzinfo 或 str) 指定时区
  • interval:固定时间间隔触发。
weeks (int) 间隔几周
days (int) 间隔几天
hours (int) 间隔几小时
minutes (int) 间隔几分钟
seconds (int) 间隔多少秒
start_date (datetime 或 str) 开始日期
end_date (datetime 或 str) 结束日期
timezone (datetime.tzinfo 或str) 时区
  • cron:在特定时间周期性地触发,和Linux crontab格式兼容。
year (int 或 str) 年,4位数字
month (int 或 str) 月 (范围1-12)
day (int 或 str) 日 (范围1-31
week (int 或 str) 周 (范围1-53)
day_of_week (int 或 str) 周内第几天或者星期几 (范围0-6 或者 mon,tue,wed,thu,fri,sat,sun)
hour (int 或 str) 时 (范围0-23)
minute (int 或 str) 分 (范围0-59)
second (int 或 str) 秒 (范围0-59)
start_date (datetime 或 str) 最早开始日期(包含)
end_date (datetime 或 str) 最晚结束时间(包含)
timezone (datetime.tzinfo 或str) 指定时区

五、配置好定时任务以后,需要在setting.py同目录的urls文件中引入刚才的文件

from until import ttime

六、然后就可以启动项目了,到时间就可以看到定时任务执行了。

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

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

相关文章

仿真模拟--telnet服务两种认证模式(自作)

自己做的笔记,有问题或看不懂请见解一下~ 目录 两个路由器间实现telnet服务(password认证模式) server client 两个路由器间实现telnet服务(aaa认证模式) server client 改名 tab键补齐 不会就扣问号 ? save 两个路由器间实现telnet服务…

有哪些去手写免费的软件?软件介绍

有哪些去手写免费的软件?在数字化时代,高效处理文字信息已成为学习和工作中不可或缺的一环。对于需要频繁处理手写试卷、笔记的用户来说,一款好的去手写软件无疑能大大提升效率。今天,我们就来推荐三款免费的去手写软件&#xff0…

CentOS 8.5 - 配置ssh的免密登录

文章目录 生成ssh密钥公钥内容放入服务器 生成ssh密钥 在本地主机安装 ssh工具,并生成公钥、私钥。 # 命令行输入 ssh-keygen -r rsa# 会在当前用户的家目录下生成一个.ssh目录公钥内容放入服务器 将上一步生成的id_rsa.pub公钥的内容复制到远程服务器 # 编辑文…

虚拟机安装JDK11操作教程

1、新建/usr/java目录 mkdir /usr/java 2、将jdk-11文件上传/usr/java目录 3、解压jdk-11文件 tar -zxvf jdk-11_linux-x64_bin.tar.gz 4、编辑配置文件,配置环境变量 vi /etc/profile 在打开的文件末尾添加 export JAVA_HOME/usr/java/jdk-11 export JRE_HOM…

对30年国债利率破2.5%的复盘反思

短期看,以月为维度,长端和超长端利率依然具有较强的向下突破的惯性;中期看,以季为维度,长端依然面临向下赔率不足的约束,但调整需要多重利空共振的契机。 短期看多,逢高配置”的四点逻辑 逻辑一…

linux——ansible实验

要求 0.进入servera进行准备工作,做一些清理 1)停止httpd服务,清除httpd软件包、配置文件、主页文件 2)清理/etc/hosts文件中的内容,只保留最上面默认的两行 (127.0.0.1和::1这两行) 1.根据之前…

短信内容关键字被拦截-阿里云通知类短信

通知类短信。地产、留学、招聘、交友、游戏等行业仅支持发送验证码。 注意不要有字眼,替换为相似的词语。否则拦截率很高

如何设计一个点赞系统

首先我们定义出一个点赞系统需要对外提供哪些接口: 1.用户对特定的消息进行点赞; 2.用户查看自己发布的某条消息点赞数量以及被哪些人赞过; 3.用户查看自己给哪些消息点赞过; 这里假设每条消息都有一个message_id, 每一个用户都…

百度安全X盈科全球数据合规服务中心:推进数据安全及合规智能化创新领域深化合作

6月19日,百度安全与盈科全球数据合规服务中心举行合作签约仪式,双方将充分发挥各自优势,在数据安全及合规智能化创新领域深化合作,在遵守国家法律法规和顺应市场规则的前提下,推动地方经济社会发展,促进企业…

(3) cmake编译多个cpp文件

文章目录 概要整体代码运行结果 概要 上一节中实现了对单个cpp文件用cmake编译。这一节升级一下 整体代码 main.cpp #include <iostream> #include "person.h"using namespace std;int main() {person me person("langdaoliu", 28, "engin…

2024考古之还在用原始JDBC开发 手搓 案例 实现一个模块的增删改

JDBC案例 将来如果完成的话 就代表对JDBC里面的知识点全部融会贯通了 其实就是对数据的增删改查 我们入门做不出来前端的内容 很正常 准备环境 建表 use mybatis;create table tbl_brand (id int primary key auto_increment,brand_name varchar(20),company_name varcha…

使用 ZoomEye 找到未启用身份验证的 Jupyter 服务器

一&#xff0e;摘要 在使用Jupyter Notebook和JupyterLab 的过程中&#xff0c;有些用户缺乏安全意识&#xff0c;未启用身份验证功能&#xff0c;导致任何用户都可以直接访问自己的Jupyter服务器&#xff0c;并查看其服务器上的代码和文档。 我们使用ZoomEye 网络空间搜索引…

SBTI认证的申请流程是什么?

SBTI&#xff08;科学基准目标倡议&#xff09;认证的申请流程通常包括以下几个关键步骤&#xff0c;以下是根据参考文章整理出的清晰流程&#xff1a; 咨询和准备阶段&#xff1a; 企业首先需要咨询SBTI认证机构&#xff0c;了解认证的标准和要求&#xff0c;并确定是否有资格…

LDO的原理及测试方法

一、基本结构 这是LM317芯片的核心,这个电路单元称为Bandgap Reference带隙基准源。属于模拟集成电路中的经典电路结构。 LDO拓扑结构图 常见的基本结构 利用VBE的负温度系数,而VT是正温度系数,正负温度系数抵消就的得到稳定的基准参考电压了(三极管的方程VBE=VT*In(lC/IS…

SCI一区TOP|局部强化优化算法(PRO)原理及实现【免费获取Matlab代码】

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;A Taheri受到部分强化效应(PRE)理论启发&#xff0c;提出了局部强化优化算法&#xff08;Partial Reinforcement Optimizer, PRO&#xff09;。 2.算法原理 2.1算法思…

OpenGL绘制Bezier曲面

Bezier的定义 贝塞尔曲面是贝塞尔曲线在二维上的扩展。它由一组控制点定义,通过这些控制点生成光滑的曲面。贝塞尔曲面通常用两个参数 u u u和 v v v来表示,这两个参数的取值范围都在 [0, 1] 之间。 数学表示 P ( u , v ) = ∑ i = 0 n ∑ j = 0 m p i j ⋅ B i , n ( u ) ⋅…

redis-基础篇(1)

黑马redis-基础篇笔记 1. 初识redis REmote DIctionary Server(Redis) 是一个由 Salvatore Sanfilippo 写的 key-value 存储系统&#xff0c;是跨平台的非关系型数据库。Redis 是一个开源的使用 ANSI C 语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式、可选持久性的…

Mybatis中BaseEntity作用

新建各种对象的时候&#xff0c;一般来说&#xff0c;有几个属性是所有对象共有的&#xff0c;比如说id,is_del&#xff0c;is_enable这些&#xff0c;然后设置一个基础对象&#xff0c;以后新建所有对象的时候都继承它&#xff0c;就省的每次都要写这些共有的属性了

HCIA-速查-ENSP模拟器2步清空配置

需求&#xff1a;清空模拟器配置 清空当前图中配置 步骤1&#xff1a;reset saved-configuration 后输入y确认 步骤2&#xff1a;reboot后输入n否认再输入y确认 验证已经清空配置

文件防篡改监控工具 - WGCLOUD全面介绍

WGCLOUD是一款优秀的运维监控软件&#xff0c;免费、轻量、高效&#xff0c;部署容易&#xff0c;上手简单&#xff0c;对新手非常友好 WGCLOUD部署完成后&#xff0c;点击菜单【文件防篡改】&#xff0c;可以看到如下页面 我们点击【添加】按钮&#xff0c;输入监控文件的信息…