Django Q Documentation
Release 0.2.2
208.74 KB
24 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
文档介绍了Django Q,一个基于Python multiprocessing的原生Django任务队列和工作应用。其功能包括多进程工作者池、异步任务、定期和重复任务、加密和压缩的任务包、失败和成功数据库、结果钩子以及与Django Admin的集成。文档详细说明了安装步骤、配置选项、管理界面以及任务调度和监控功能。Django Q支持Python 2.7和3.4,依赖Django、django-picklefield、Redis-py和Arrow等库,并提供了通过Admin页面查看成功任务、失败任务和定时任务的能力。 | ||
AI总结 | ||
### Django Q 文档总结(版本 0.2.0)
**Django Q** 是一个原生 Django 任务队列和工作应用,利用 Python 多处理功能。以下是其核心功能和配置信息的总结:
---
#### **1. 功能概述**
- **多进程 worker 池**:支持多个 worker 进程同时处理任务。
- **异步任务**:支持将任务异步执行。
- **定时和重复任务**:支持根据时间计划和重复执行任务。
- **加密和压缩**:任务包以加密和压缩形式传输,并使用 Django 的 `SECRET_KEY` 保证安全。
- **失败和成功数据库**:记录任务的执行结果,失败任务会自动保存,成功任务可配置保存数量。
- **结果 Hook**:支持在任务完成后执行 Hook 函数。
- **Django Admin 集成**:提供 Admin 界面管理任务和调度。
- **PaaS 兼容性**:支持多实例部署,具备集群监控功能。
- **Redis 支持**:依赖 Redis 作为消息队列。
- **兼容性**:支持 Python 2.7 & 3.4,Django 1.7.8 & 1.8.2。
---
#### **2. 安装与配置**
- **安装**:
1. 使用 pip 安装:`pip install django-q`
2. 在 `settings.py` 中添加 `'django_q'` 到 `INSTALLED_APPS`。
3. 运行迁移命令:`python manage.py migrate`。
4. 确保 Redis 服务已运行。
- **配置**:
- **Redis 设置**(默认值):
```python
Q_CLUSTER = {
'name': 'DJRedis',
'workers': 4,
'timeout': 90,
'django_redis': 'default'
}
```
- **成功任务保存策略**:通过 `save_limit` 配置最大保存数量(默认 250)。
- **失败任务**:始终保存,用户可通过 Admin 界面重新提交。
---
#### **3. 任务管理**
- **任务属性**:
- `result`:存储任务结果或错误信息。
- `kwargs`:任务函数的关键字参数。
- `started`:任务开始时间。
- `stopped`:任务结束时间。
- `success`:任务是否成功执行。
- `time_taken()`:计算任务执行时间(单位:秒)。
- **任务结果**:
- **成功任务**:通过 `Success` 代理模型管理。
- **失败任务**:通过 `Failure` 代理模型管理,支持重新提交。
---
#### **4. 调度功能**
- **调度类型**:支持一次性、定时(如每日、每周)和重复执行。
- **调度方法**:
```python
# 使用 schedule装饰器
schedule('math.copysign', 2, -2, hook='hooks.print_result', schedule_type=Schedule.DAILY)
# 或直接创建 Schedule 对象
Schedule.objects.create(func='math.copysign', hook='hooks.print_result', args='2,-2', schedule_type=Schedule.DAILY)
```
- **调度参数**:
- `func`:需要执行的函数(字符串格式,如 'math.copysign')。
- `args`:函数参数。
- `hook`:任务完成后的 Hook 函数。
- `schedule_type`:调度类型,支持 `ONCE`、`DAILY` 等。
- `repeats`:任务重复执行的次数。
---
#### **5. 监控与Admin界面**
- **监控功能**:
- 提供 `Stat` 类用于获取集群状态,包括:
- `task_q_size`:任务队列中任务的数量。
- `done_q_size`:结果队列中任务的数量。
- `pusher`:推送进程的 PID。
- `monitor`:监控进程的 PID。
- `sentinel`:Sentinel 进程的 PID。
- `workers`:当前集群中 worker 的 PID 列表。
- 方法:
- `empty_queues()`:检查任务队列是否为空。
- `get(cluster_id)`:获取指定集群的状态。
- `get_all()`:获取所有活跃集群的状态。
- **Admin界面**:
Django Q 使用 Django 的默认模型 Admin 管理界面,提供以下功能:
- **成功任务**:展示所有成功执行的任务,可查看详情或删除。
- **失败任务**:展示所有失败的任务,可通过 Admin 动作菜单重新提交。
- **调度任务**:管理定时任务,支持增删改查。
---
#### **6. 依赖项**
- **Python 包**:
- `django-picklefield`:用于存储任务参数和结果。
- `redis-py`:Redis 客户端。
- `arrow`:用于时间计算。
- **Redis**:需要单独安装和配置。
---
#### **7. 其他说明**
- **标签**:Admin 页面的默认标签为 `Django Q`,可通过 `Q_LABEL` 配置更改。
- **Sentinel**:Sentinel 进程会根据需要启动新的 worker 进程。
---
Django Q 是一个功能强大、易于集成的任务队列系统,适用于需要处理异步任务和定时任务的 Django 项目。通过 Redis 作为消息队列,它提供了高效的任务分发和执行机制,同时 Admin 界面简化了任务管理和监控。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
17 页请下载阅读 -
文档评分