Django-Q设置Django调度和定时任务

场景说明:

Django项目需要实现每30秒刷新一次首页信息

1.安装库

复制代码
pip install django-q

2.添加app

复制代码
INSTALLED_APPS = [
       # ... 其他应用程序 ...
       'django_q',
   ]

3.配置

复制代码
Q_CLUSTER={ 
        'name':'project', 
        'workers':4, 
        'recycle':500, 
        'timeout':60, 
        'compress':True, 
        'cpu_affinity':1, 
        'save_limit':250, 
        'queue_limit':500, 
        'label':'DjangoQ', 
        'redis':{ 
            'host':'127.0.0.1', 
            'port':6379, 
            'db':0, 
        } 
    }

4.定义一个任务,例如打印一条消息(异步执行)

复制代码
# tasks.py
from django_q.tasks import async_task
def print_message():
    print("This is a message from Django - Q")
async_task(print_message)

5.定时任务示例

  • 这里需要注意几点:
    • func参数需要指定任务函数的完整路径,格式为app_name.module_name.task_function_name。你需要将your_app_name替换为你的 Django 应用的实际名称,q_tasks(如果你的任务函数定义在q_tasks.py文件中)替换为实际的模块名称。

    • schedule_type指定了时间单位的类型,这里使用Schedule.MINUTES表示以分钟为单位。然后通过minutes参数设置具体的时间间隔,0.5 分钟即 30 秒。

    • repeats参数设置为 - 1,表示这个任务会无限次地重复执行。如果你想让任务只执行一定的次数,可以设置一个正整数。

      from django_q.models import Schedule
      from django_q.tasks import async_task
      import time

      def my_task():
      print("This task is executed every 30 seconds.")
      # 这里可以添加实际要执行的任务逻辑,比如更新数据、发送通知等

      创建定时任务

      Schedule.objects.create(
      func='your_app_name.q_tasks.my_task', # 替换为你的应用名称和任务函数所在的模块路径
      schedule_type=Schedule.MINUTES,
      minutes=0.5, # 因为0.5分钟就是30秒
      repeats=-1 # -1表示无限重复执行任务
      )

6.启动Django-Q

  • 在你的 Django 项目的启动文件(如urls.py或者apps.py等)中启动 Django - Q 任务队列。例如,在urls.py中添加以下代码:

    import qcluster
    qcluster.start()

7.启动项目,启动后队列也开始执行

相关推荐
自可乐8 分钟前
LangGraph从入门到精通:构建智能Agent的完整指南
人工智能·python·机器学习
m0_5613596710 分钟前
使用Docker容器化你的Python应用
jvm·数据库·python
一条闲鱼_mytube13 分钟前
MySQL vs PostgreSQL 对比
数据库·mysql·postgresql
Maynor99613 分钟前
Clawdbot安装教程:从零开始到接入飞书
java·数据库·飞书
小北方城市网16 分钟前
Spring Boot 多数据源与事务管理实战:主从分离、动态切换与事务一致性
java·开发语言·jvm·数据库·mysql·oracle·mybatis
Loo国昌23 分钟前
【垂类模型数据工程】第四阶段:高性能 Embedding 实战:从双编码器架构到 InfoNCE 损失函数详解
人工智能·后端·深度学习·自然语言处理·架构·transformer·embedding
逻极31 分钟前
Moltbot 快速入门指南(2026年1月最新版)
python·ai·aigc·智能助手·clawdbot·molbot
AAD5558889936 分钟前
基于Deformable-DETR的植物叶片病害检测
python
Cemtery11638 分钟前
Day40 早停策略和模型权重的保存
人工智能·python·深度学习·机器学习
Jackson@ML40 分钟前
[Kimi重磅出击!]用Kimi Code智能高效开发Web应用程序指南
ide·python·kimi code