django-q轻量级定时任务制定

django-q ,celery,apschedule都可以作为python的选型,但是django-q更轻量级,可以定制想要的任务,通过消息中间件,来实现不太高并发的实现
官网介绍地址
django-q官网地址

本次测试的是python3.12版本
首先需要安装django-q,具体安装方式pip install django-q
国内的话可以选择清华或者豆瓣源进行安装
最后在settings.py文件中INSTALLED_APPS添加

INSTALLED_APPS = [#放在最后面添加即可'django_q',]

然后配置队列消息中间件
相关消息中间件配置可以参照官网
中间件选型
为了测试方便选择了orm配置
settings.py添加如下内容

Q_CLUSTER = {'name': 'DjangORM','workers': 1,'timeout': 90,'retry': 120,'queue_limit': 50,'bulk': 10,'orm': 'default'
}

为了方便views.py视图,自己创建了一个app01项目
核心代码如下

from django.shortcuts import render,HttpResponse
from django.http import JsonResponse,request# Create your views here.import mathdef demo_task(number):print(number,type(number))return math.sqrt(number)from django_q.tasks import async_task, Taskdef task_finish(task: Task):print(f'任务 {task.name}(ID:{task.id})完成!')
# hook参数是执行完成回调函数,可以通过admin后台查看结果
def create_task(request):task_id=async_task(demo_task, 10,task_name='测试任务1',hook=task_finish,)return JsonResponse({'task_id':task_id,'result':'成功'})from django_q.tasks import schedule,Scheduledef create_cron1(request):schedule('app01.views.demo_task',1000,schedule_type=Schedule.MINUTES,minutes=1,task_name='定时任务1',)return JsonResponse({'result':'定时任务1创建'})

配置相关的urls.py路由前端能识别到
在这里插入图片描述
执行每个命令分别新开一个窗口执行,前三步必须顺序执行,后两步骤可部分先后顺序执行

python manage.py makemigrations
python manage.py migrate
python manage.py runserver
python manage.py createsuperuser
python manang.py qcluster

打开浏览器执行
在这里插入图片描述
可以看到定时任务已经创建
在这里插入图片描述
为什么是两个定时任务因为有一个是我之前创建
在这里插入图片描述
可以看到里面的参数,我们可以定制修改

定时任务执行结果
在这里插入图片描述

Django-Q的定时任务类型:

一次性

按x分钟执行一次

每小时一次

每天

每周

每月

每季度

每年

Cron表达式

注意,即使是Cron表达式,定时任务执行的最短间隔也是1分钟缘由

The current design has a heartbeat of 30 seconds, which means the schedule table can't have schedules below that. Most of this is explained in the architecture docs. Because of the way the internal loop is set up, a resolution under a dozen seconds or so, quickly becomes unreliable.I always imagined tasks that need accuracy measured in seconds, would use a delayed tasks strategy where a few seconds delay is either added through the broker or inside the task itself.The problem with all this, is that a task is currently always added to the back of the queue. So even with a 1 second resolution on the schedule, the task still has to wait it's execution time. Which can of course vary wildly depending on the broker type, worker capacity and current workload.

当然如果触发了定时任务也可以触发信号
signal官网文档

具体完整版本可以参考附件下载

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

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

相关文章

QT 如何防止 QTextEdit 自动滚动到最下方

在往QTextEdit里面append字符串时,如果超出其高度,默认会自动滚动到QTextEdit最下方。但是有些场景可能想从文本最开始的地方展示,那么就需要禁止自动滚动。 我们可以在append之后,添加如下代码: //设置编辑框的光标位…

华为配置WLAN外置Portal认证实验

华为配置WLAN外置Portal认证示例 组网图形 图1 配置WLAN外置Portal认证示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤 业务需求 某企业为了提高WLAN网络的安全性,采用外置Portal认证方式,实现对用户的接入控制。 组网需求 AC组…

论文阅读——Align before Fuse

Align before Fuse: Vision and Language Representation Learning with Momentum Distillation image-text contrastive learning(ITC)用在单模态,masked language modeling (MLM) and image-text matching (ITM) 用在多模态。 单模态编码器的表示上引入了中间图像…

如何在Windows 10上打开和关闭平板模式?这里提供详细步骤

前言 默认情况下,当你将可翻转PC重新配置为平板模式时,Windows 10会自动切换到平板模式。如果你希望手动打开或关闭平板模式,有几种方法可以实现。​ 自动平板模式在Windows 10上如何工作 如果你使用的是二合一可翻转笔记本电脑&#xff0…

常见的十大网络安全攻击类型

常见的十大网络安全攻击类型 网络攻击是一种针对我们日常使用的计算机或信息系统的行为,其目的是篡改、破坏我们的数据,甚至直接窃取,或者利用我们的网络进行不法行为。你可能已经注意到,随着我们生活中越来越多的业务进行数字化&…

嵌入式学习day37 数据结构

1.sqlite3_open int sqlite3_open( const char *filename, /* Database filename (UTF-8) */ sqlite3 **ppDb /* OUT: SQLite db handle */ ); 功能: 打开数据库文件(创建一个数据库连接) 参数: filename:数据库文…

django-comment-migrate 模型注释的使用

django-comment-migrate 的使用 django-comment-migrate 是一个 Django 应用,用于将模型注释自动迁移到数据库表注释中。它可以帮助您保持数据库表注释与模型定义的一致性,并提高代码的可读性。 安装 要使用 django-comment-migrate,您需要…

Rust 深度学习库 Burn

一、概述 Burn 它是一个新的综合动态深度学习框架,使用 Rust 构建的,以极高的灵活性、计算效率和可移植性作为其主要目标。 Rust Burn 是一个以灵活性、高性能和易用性为核心设计原则工具,主打就是灵活性 、高性能 及易用性。 二、Rust B…

Android 监听卫星导航系统状态及卫星测量数据变化

源码 package com.android.circlescalebar;import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.Manifest; import android.conte…

bootstrap企业网站前端模板

介绍 企业网站前端模板 软件架构 前端所用技术html/css/js/jquery 前端框架bootstrap 安装教程 浏览器本地路径访问发布到服务器比如(tomcat/nginx等)云服务器/虚拟机 网站效果图 网站预览 点击预览 源码地址 https://gitee.com/taisan/company…

从金蝶云星空到钉钉通过接口配置打通数据

从金蝶云星空到钉钉通过接口配置打通数据 对接系统金蝶云星空 金蝶K/3Cloud(金蝶云星空)是移动互联网时代的新型ERP,是基于WEB2.0与云技术的新时代企业管理服务平台。金蝶K/3Cloud围绕着“生态、人人、体验”,旨在帮助企业打造面…

【深度学习笔记】9_5 多尺度目标检测

注:本文为《动手学深度学习》开源内容,部分标注了个人理解,仅为个人学习记录,无抄袭搬运意图 9.5 多尺度目标检测 在9.4节(锚框)中,我们在实验中以输入图像的每个像素为中心生成多个锚框。这些…