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_events

import 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

8.网络游戏逆向分析与漏洞攻防-游戏网络架构逆向分析-游戏底层功能对接类GameProc的实现

内容参考于:易道云信息技术研究院VIP课 上一个内容:通过逆向分析确定游戏明文接收数据过程 码云地址(master 分支):https://gitee.com/dye_your_fingers/titan 码云版本号:bcf7559184863febdcad819e48aaa…

应用配置管理

一、Pod 配置管理 可变配置用 ConfigMap; 敏感信息用 Secret; 身份认证用 ServiceAccount 这几个独立的资源来实现的; 资源配置用 Resources; 安全管控用 SecurityContext; 前置校验用 InitContainers 这几个在 …

在VSCode中新配置一个ros项目

如何从零开始配置一个ros项目 预先准备初始化ros工程运行hello_ros进行第一个示例进行编译测试 预先准备 首先要在vscode中安装(必须安装的):ros,c,cmake,cmake tools(补全camkelist文件&#…

Mcal篇 配置Dio模块输出

1、打开EB,新建工程 AUTOSAR version 4.0.3 2、导入Mcu 、Dio、Port三个模块 发现 verify 选项是灰色,重启EB verify,0 Errors 0 Warnings 验证OK 3、配置 clock 时钟 4、配置Dio 目标是 配置15.0~15.3 四个引脚 输出 改为DioPort_…

第2.5章 StarRocks表设计——行列混存表

注:本篇文章阐述的是StarRocks- 3.2.3版本的行列混存表 一、概述 1.1 背景 StarRocks 基于列存格式引擎构建,在高并发场景,用户希望从系统中获取整行数据。当表宽时,列存格式将放大随机IO和读写。自3.2.3开始,StarRo…

DDS通信协议

DDS(Data Distribution Service)是一套通信协议和 API 标准;它提供了以数据为中心的连接服务,基于发布者-订阅者模型。这是一套中间件,它提供介于操作系统和应用程序之间的功能,使得组件之间可以互相通信。…

Qt Creator如何快速添加函数说明

/***************************************************************** *函数名称:Name *功能描述:详细描述 *参数说明:参数说明 *返回值: 返回值说明 ******************************************************************/

图像生成评价指标:Inception Score和 FID 的定义,区别,联系。

IS(Inception Score)和FID(Frechet Inception Distance score)的定义,区别,联系: IS(Inception Score) 定义: IS基于Google的预训练网络Inception Net-V3。…

【服务发现--ingress】

1、ingress介绍 Ingress 提供从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源所定义的规则来控制。 Ingress 是对集群中服务的外部访问进行管理的 API 对象,典型的访问方式是 HTTP。 Ingress 可以提供负载均衡、SSL 终结和基于名称的虚拟…

贪心算法---前端问题

1、贪心算法—只关注于当前阶段的局部最优解,希望通过一系列的局部最优解来推出全局最优----但是有的时候每个阶段的局部最优之和并不是全局最优 例如假设你需要找给客户 n 元钱的零钱,而你手上只有若干种面额的硬币,如 1 元、5 元、10 元、50 元和 100…

【变压器故障诊断分类及预测】基于GRNN神经网络

课题名称:基于GRNN神经网络的变压器故障诊断分类及预测 版本日期:2024-02-10 运行方式:直接运行GRNN0507.m文件 代码获取方式:私信博主或QQ:491052175 模型描述: 对变压器油中溶解气体进行分析是变压器…

JavaAPI常用类01

目录 概述 Object类 Object类_toString() 代码展示 重写toString()方法前后输出 Object类_equals() 代码展示 重写equals()方法前后输出对比 Arrays类 equals()方法 Binary Search(二分查找) copyOf()方法 sort()方法 了解sort()方法 进阶…

在使用nginx的时候快速测试配置文件,并重新启动

小技巧 Nginx修改配置文件后需要重新启动,常规操作是启动在任务管理器中关闭程序然后再次双击nginx.exe启动,但是使用命令行就可以快速的完成操作。 将cmd路径切换到nginx的安装路径 修改完成配置文件后 使用 nginx -t校验nginx 的配置文件是否出错 …

Python入门必学:reverse()和reversed()的区别

Python入门必学:reverse()和reversed()的区别 📅2024年02月25日 🌈 个人主页:高斯小哥 🔥 高质量专栏:Matplotlib之旅:零基础精通数据可视化、Python基础【高质量合集】、PyTorch零基础入门教程…

Cover和contain属性

一.背景的盒子 代码&#xff1a; <body><div class"box"></div><style>.box {width: 500px;height: 500px;border: 1px solid #ccc;background: url(./20191017095131790.png) no-repeat;}</style></body> 盒子的宽度和高度是…

SpringBootRest服务调用

目录 RestTemplate 依赖配置 自定义RestTemplate webCilent 依赖配置 自定义webCilent springboot中有两种方式实现Rest远程服务调用&#xff0c;分别是RestTemplate与webCilent。下面分别介绍一下这两种方式。 RestTemplate 依赖配置 RestTemplate是Spring Framework提供的…

不会做UI自动化测试?一起设计框架再实践吧

目的 相信做过测试的同学都听说过自动化测试&#xff0c;而UI自动化无论何时对测试来说都是比较吸引人的存在。 相较于接口自动化来说它可以最大程度的模拟真实用户的日常操作与特定业务场景的模拟&#xff0c;那么存在即合理&#xff0c;自动化UI测试自然也是广大测试同学职…

2.23日学习打卡----初学Nginx(二)

2.23日学习打卡 目录: 2.23日学习打卡一. Nginx 虚拟主机虚拟主机的分类Nginx支持三种类型的虚拟主机配置Nginx虚拟主机单网卡多IP配置Nginx虚拟主机_基于域名虚拟主机配置Nginx虚拟主机基于多端口的配置4 二. Nginx 核心指令root和alias指令的区别return指令rewrite指令rewrit…

Vue | (六)使用Vue脚手架(下)| 尚硅谷Vue2.0+Vue3.0全套教程

文章目录 &#x1f4da;Vue 中的自定义事件&#x1f407;使用方法&#x1f407;案例练习&#x1f407;TodoList案例优化 &#x1f4da;全局事件总线&#x1f407;使用方法&#x1f407;案例练习&#x1f407;TodoList案例优化 &#x1f4da;消息订阅与发布&#x1f407;使用方法…

RCE (Remote ????? execution) --->CTF

看这个标题就知道今天的内容不简单&#xff01;&#xff01;&#xff01;&#xff01; 那么就来讲一下我们的RCE吧 目录 ​编辑 1. &&#xff1f; |&#xff1f; ||&#xff1f; &&&#xff1f; 2.PHP命令执行函数&& ||"" 1."" &…