Django Q Documentation
Release 0.4.6
203.66 KB
42 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .epub | 3 |
摘要 | ||
文档详细介绍了Django Q 0.4.6版本的功能和使用方法。Django Q是一个基于Django的任务队列应用,支持多进程工作池、异步任务和定时任务。通过Redis作为消息代理,集群监控可以实时查看任务执行状态,并在Django Admin页面管理成功、失败和定时任务。文档还指导了安装步骤和配置选项,如workers数量、超时设置、Redis连接等,以确保高效的任务处理。 | ||
AI总结 | ||
《Django Q Documentation Release 0.4.6》文档总结如下:
---
### 1. **Django Q 概述**
Django Q 是一个基于 Python 多进程的原生 Django 任务队列和 worker 应用程序。它支持以下功能:
- 多进程 worker 池
- 异步任务
- 定时任务和重复任务
- 加密和压缩任务包
- 失败和成功任务数据库记录
- 结果钩子和任务组
- 集成 Django Admin
- 支持多实例部署
- 多集群监控
- 使用 Redis 作为消息代理
- 支持 Python 2.7 和 3.4,以及 Django 1.7.9 和 1.8.3。
---
### 2. **核心功能**
#### **任务队列**
- 支持通过 `async()` 函数创建异步任务。
- 支持通过 `schedule()` 函数创建定时任务,任务可以一次性或重复执行。
- 支持任务组(Groups),可同时执行多个任务。
#### **监控**
- 通过 `python manage.py qmonitor` 命令启动监控面板,查看集群状态。
- 状态包括:正在启动(Starting)、空闲(Idle)、处理任务(Working)、停止中(Stopping)、已停止(Stopped)。
- 监控面板显示主机、集群 ID、当前状态、worker 池大小等信息。
#### **Admin 页面**
- **成功任务**:展示所有成功执行的任务,可按名称、函数和组进行搜索和排序。
- **失败任务**:展示因错误未完成的任务,可通过 Admin 动作菜单重新提交失败的任务。
- **定时任务**:允许创建、编辑或删除定时任务,支持设置重复次数(`repeats` attribute)。
#### **配置**
- 通过 `Q_CLUSTER` 字典在 `settings.py` 中配置。
- 支持 Redis 连接设置,例如主机(`host`)、端口(`port`)、数据库(`db`)等。
- 其他配置项包括:
- `name`:用于区分同一 Redis 服务器上的不同项目。
- `workers`:指定 worker 的数量。
- `timeout`:任务超时时间。
- `compress`:是否压缩任务数据。
- `save_limit`:成功任务的最大保留数量。
- `cpu_affinity`:设置每个 worker 的 CPU_door 数。
#### **依赖项**
- **必需**:
- Redis 服务。
- Django-picklefield:用于在数据库中存储任务参数和结果。
- Redis-py:Redis 的 Python 客户端。
- Arrow:用于任务调度。
- **可选**:
- Psutil:提供 CPU_affinity 功能。
- Hiredis:提升 Redis 解析性能。
#### **安装**
1. 安装 Django Q:`pip install django-q`。
2. 在 `settings.py` 中添加 `django_q` 到 `INSTALLED_APPS`。
3. 运行迁移命令:`python manage.py migrate`。
4. 确保 Redis 服务已启动,并在 `Q_CLUSTER` 中配置 Redis 连接信息。
---
### 3. **示例**
#### **异步任务**
```python
from django_q import async
async('django.core.mail.send_mail', 'Subject', 'Message', 'from@example.com', ['to@example.com'])
```
#### **定时任务**
```python
from datetime import timedelta
from django.utils import timezone
from django_q import schedule
schedule('myapp.tasks.my_task', schedule_type=Schedule.DAILY, next_run=timezone.now() + timedelta(hours=1))
```
#### **信号(Signals)**
```python
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django_q import async
@receiver(pre_save, sender=User)
def user_pre_save(sender, instance, **kwargs):
async('myapp.tasks.send_notification', instance.id)
```
---
### 4. **架构**
Django Q 使用 Python 的 `multiprocessing` 模块管理 worker 进程,支持多集群部署和高可用性。
---
以上是文档的核心内容和关键信息,涵盖了安装、配置、功能、监控和示例等方面。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
35 页请下载阅读 -
文档评分