pdf文档 Django Q Documentation Release 0.5.3

358.27 KB 38 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
文档详细介绍了Django Q的功能和配置,包括多进程工作池、异步任务、定时和重复任务、加密和压缩的数据包、失败和成功数据库、结果钩子和组、Django Admin集成、多实例PaaS兼容性、多集群监控、Redis broker、Python 2和3的支持。安装步骤包括使用pip安装、添加到INSTALLED_APPS、运行迁移命令,并确保Redis服务器运行。配置通过Q_CLUSTER字典在settings.py中处理,包括worker数量、任务超时、压缩、任务保存限制等。文档还说明了如何处理失败任务、定时任务的重复执行以及在Admin界面中进行任务监控和管理。
AI总结
以下是文档内容的简要总结,重点突出核心功能、配置和使用方法: --- ### **《Django Q Documentation Release 0.5.3》概要** #### **1. 功能概述** Django Q 是一个原生 Django 任务队列、调度器和工作应用,支持以下主要功能: - 多进程 worker 池 - 异步任务处理 - 定时和重复任务 - 加密和压缩任务包 - 失败和成功任务记录 - 结果钩子和任务组 - Django Admin 集成 - 支持多实例和 PaaS 部署 - 多集群监控 - Redis 作为消息代理 - 支持 Python 2.7 & 3.4,Django 1.7.10 & 1.8.4 --- #### **2. 安装** 安装步骤如下: 1. 使用 pip 安装最新版本: ```bash $ pip install django-q ``` 2. 将 `django_q` 添加到 `INSTALLED_APPS` 中。 3. 运行数据库迁移: ```bash $ python manage.py migrate ``` 4. 确保 Redis 服务器已启动并可连接。 --- #### **3. 配置** 配置通过 `settings.py` 中的 `Q_CLUSTER` 字典完成,主要配置项包括: - `name`: 项目名称,用于区分同一 Redis 服务器上的不同项目,默认为 `'default'`。 - `workers`: 集群 worker 数量,默认为 CPU 核数。 - `recycle`: 单 worker 处理任务的数量后回收,默认为 500。 - `timeout`: 单任务允许的超时时间(秒),默认为不超时。 - `compress`: 是否压缩任务包,,默认为 `False`。 - `save_limit`: 成功任务保存的最大数量,0 为无限,-1 为不保存,默认为 250。 - `redis`: Redis 连接配置,包括 `host`、`port` 和 `db`。 --- #### **4. 监控** Django Q 提供多种监控方式: - **Monitor**: 查看集群状态,包括任务数量、执行时间、worker 状态等。 - **qinfo 命令**: 显示集群统计信息: ```bash $ python manage.py qinfo ``` - **Stat 类**: 通过代码查询集群状态,例如: ```python from django_q.monitor import Stat stat = Stat.get(cluster_id) print(stat.status, stat.workers) ``` --- #### **5. Admin 界面** - **成功任务**: 使用 `Success` 代理模型,可通过 `save_limit` 配置是否保存成功任务。 - **失败任务**: 使用 `Failure` 代理模型,失败任务会记录错误信息。 - **定时任务**: 支持创建、编辑、删除定时任务,atsuerrupt 属性可设置重复次数,负值表示无限次。 --- #### **6. 示例** 发送异步邮件的示例: ```python from datetime import timedelta from django.utils import timezone from django_q import async, schedule def welcome_mail(user): # 立即发送邮件 async('django.core.mail.send_mail', 'Welcome', 'Welcome to our website', 'from@example.com', [user.email]) # 1 小时后发送跟进邮件 msg = 'Here are some tips to get you started...' schedule('django.core.mail.send_mail', 'Follow up', msg, 'from@example.com', [user.email], schedule_type=Schedule.ONCE, next_run=timezone.now() + timedelta(hours=1)) ``` --- Django Q 是一个功能强大的 Django 任务队列工具,支持异步任务、定时任务和集群监控,适合高并发和复杂任务处理场景。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 31 页请下载阅读 -
文档评分
请文明评论,理性发言.