Django 使用Apscheduler执行定时任务

devtools/2024/10/9 0:39:28/

APScheduler是一个轻量级的Python库,用于调度作业(运行定时任务)。在Django中使用APScheduler,你可以设置定时任务,比如每天定时发送报告,或者定时清理无效数据。

以下是一个简单的例子,展示如何在Django项目中使用APScheduler:

1.首先,安装APScheduler:

pip install apscheduler

2.在Django应用中创建一个任务文件,例如jobs.py:

from apscheduler.schedulers.background import BackgroundScheduler
import datetimedef my_job():print(f"任务执行:{datetime.datetime.now()}")# 创建调度器
scheduler = BackgroundScheduler()
# 添加任务
scheduler.add_job(my_job, 'interval', minutes=1)
# 启动调度器
scheduler.start()

3.在Django的apps.py中启动调度器,确保在Django启动时任务能被加载:

from django.apps import AppConfig
from .jobs import schedulerclass MyAppConfig(AppConfig):name = 'my_app'def ready(self):# 当Django应用就绪时,启动调度器scheduler.start()

4.在__init__.py中设置AppConfig:

default_app_config = 'my_app.apps.MyAppConfig'

确保你的Django应用的名字替换成你实际的应用名。

以上代码将每分钟执行一次my_job函数。你可以根据需要调整任务的触发方式(例如,改变为每天或每小时一次)。记得在生产环境中部署时,确保调度器的启动逻辑只在一个进程中执行,避免多个进程执行相同任务的问题。

5.代码结构

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

6.代码优化:重复执行任务

INSTALLED_APPS = (# ..."django_apscheduler",
)
django_apscheduler_djangojob 表保存注册的任务以及下次执行的时间django_apscheduler_djangojobexecution 保存每次任务执行的时间和结果和任务状态

在这里插入图片描述

# views.py
from django_apscheduler.jobstores import DjangoJobStore, register_jobfrom apscheduler.schedulers.blocking import BlockingScheduler
from datetime import datetimescheduler = BlockingScheduler()  # 创建调度器
scheduler.add_jobstore(DjangoJobStore(), "default")# 添加定时任务方式一
@register_job(scheduler, "interval", seconds=5, id="func", replace_existing=True, misfire_grace_time=120)
def job():print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))# 添加定时任务方式二
def job1():print(datetime.now().strftime("%Y-%m-%d %H:%M:%S"))scheduler.add_job(job1,'interval',seconds=5,id='my_job',  # 任务的唯一标识replace_existing=True,
)scheduler.start()

http://www.ppmy.cn/devtools/103501.html

相关文章

pytorch初始化张量并填充随机整数值

在 PyTorch 中,你可以使用 torch.randint 或 torch.empty 加上 random_ 方法来初始化张量并填充随机整数值。以下是两种常用的方法: 1. 使用 torch.randint torch.randint 直接生成一个指定形状的张量 ,并填充在给定范围内的随机整数。 示…

JavaScript 中的 Stream API 02(可读流 ReadableStream 等 API)

Stream API 可读流 API ReadableStream ReadableStream 可读流实例创建: new ReadableStream(underlyingSource, queuingStrategy) underlyingSource 参数(可选): 该参数包含构造流对应的行为方法和属性的对象,主要包含如下 start(control…

vue3项目使用EventSource实现流式输出例如滚动日志

前言 之前接触的通信方式主要是HTTP请求和WebSocket,这次有机会了解到EventSource,记录一下。 简介 EventSource是一个浏览器端用于接收服务器推送事件(Server-Sent Events, SSE)的 JS API。与 WebSocket 不同,SSE …

Linux CentOS 添加路由

一、临时添加 查看当前路由表 ip route show添加路由 假设你要添加一条到特定网络的路由&#xff0c;可以使用以下命令&#xff1a; sudo ip route add <destination_network>/<netmask> via <gateway> dev <interface>例如&#xff0c;要添加一条…

Dockerfile应用、私有仓库

通过dockerfile创建⼀个在启动容器时&#xff0c;就可以启动httpd服务的镜 像 步骤 1. 创建⼀个⽬录&#xff0c;⽤于存储Docker file所使⽤的⽂件 1. 在此⽬录中创建Docker file⽂件&#xff0c;以及镜像制作所使⽤的⽂件 1. 使⽤docker build创建镜像 1. 使⽤创建的镜像…

数学建模学习(123):使用Python实现ARAS方法进行多准则决策实战

文章目录 1 引言1.1 简介1.2 ARAS方法的基本原理2. 案例分析:设备采购决策2.1. 数据集的构建2.2 权重的设定2.3. 准则类型的设定2.4. ARAS方法实现2.5. 结果分析1 引言 1.1 简介 多准则决策分析(MCDA)是一种用于帮助决策者在多个备选方案和多个相互冲突的准则中选择最佳方…

Golang学习总结

一、基本语法 Golang 设计理念&#xff1a;一种事情有且只有一种方法完成 软件包安装 直接官网下载好&#xff0c;配置安装下环境变量即可 /etc/profile # 在这个文件写入会对所有用户生效 ~/.profile # 在这个文件写入只会对当前用户生效# 以上两个文件中…

HarmonyOS NEXT未成年人模式无缝联动所有应用,过滤非适龄内容

背景 随着消费电子产品和移动互联网的普及&#xff0c;未成年人互联网普及率96.8%&#xff0c;超过80%的未成年人都拥有自己的上网设备&#xff0c;而如何引导孩子正确上网一直是家长们的担忧。市场上很多电子设备、系统推出了一些未成年人管控能力&#xff0c;却需要家长到各…