Django Q Documentation
Release 0.7.13
416.37 KB
56 页
0 下载
48 浏览
0 评论
0 收藏
所属分类:
后端开发 / Python / Django
| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .pdf | 3 |
| 摘要 | ||
The document provides a comprehensive guide to Django Q, a library for asynchronous task processing and scheduling in Django projects. It covers installation, configuration, task management, cluster setup, monitoring, and integration with various brokers. Key features include task scheduling with different frequencies (daily, hourly, etc.), cluster management using multiprocessing, and monitoring live cluster statistics. The document also highlights optional dependencies like Redis, MongoDB, and cache frameworks for enhanced functionality. | ||
| AI总结 | ||
# Django Q 0.7.13 文档总结
## 1. 特性概述
Django Q 是一个用于在 Django 项目中处理异步任务的扩展,支持分布式任务队列和调度功能。
## 2. 安装要求
- Python 版本:2.7 和 3.5
- Django 版本:1.8.8 和 1.9.1
- 可选依赖:
- `django-picklefield`:用于存储任务参数和结果。
- `arrow`:用于时间调度。
- `blessed`:用于终端布局。
## 3. 配置与中间件
- 支持多种中间件(Broker):
- Redis
- Disque
- MongoDB
- Amazon SQS
- IronMQ
- 配置选项:
- 结果存储:默认使用数据库,可配置为缓存(如 Redis 或 Memcached)。
- 超时设置:控制任务执行和队列的超时时间。
- CPU 亲和性:通过 `psutil` 控制进程的 CPU 使用。
## 4. 任务功能
- **异步任务**:通过 `@async` 装饰器或 `Async` 类创建任务。
- **缓存**:支持将任务结果缓存到 Redis 或 Memcached,可设置缓存超时时间。
- **任务组**:允许将多个任务组合在一起,便于管理和批量操作。
- **可迭代任务**:支持处理可迭代数据,提供灵活的任务执行方式。
- **任务链**:通过链式调用任务,实现复杂的任务依赖关系。
## 5. 调度功能
- 支持定时任务调度:
- **频率**:分钟、小时、天、周、月、季度、年。
- **注意事项**:
- 月度任务:若设置在 31 日,将在下个月最后一天执行。
- 年度任务:若设置在 2 月 29 日,将在闰年以外的年份执行在 2 月 28 日。
## 6. 集群管理
- 使用 `multiprocessing` 模块管理多进程任务队列。
- 启动命令:`python manage.py qcluster`。
- 停止方式:`Ctrl-C` 或信号(`SIGTERM`、`SIGKILL`)。
- 配置参数:
- 工作进程数
- 超时时间
- 进程亲和性
## 7. 监控与管理页面
- **监控页面**:
- 显示所有集群的实时状态。
- 数据项:任务队列大小、结果队列大小、进程 ID 等。
- 使用 Django 的缓存框架存储统计数据。
- **管理页面**:
- 展示成功任务记录,支持按组或函数名过滤。
- 显示任务执行时间、状态和结果。
## 8. 信号与报告
- **信号处理**:通过 Django 的 `pre_save` 等信号触发异步任务。
- **报告生成**:支持通过异步任务生成报告,并通过钩子处理结果。
## 9. 架构
- **主进程**:负责管理任务队列和进程。
- **推送进程**:负责将任务推送到队列。
- **监控进程**:实时监控集群状态。
## 10. 示例
- **信号示例**:
```python
@receiver(pre_save, sender=User)
def email_changed(sender, instance, **kwargs):
if user.email != instance.email:
async('tasks.inform_everyone', instance)
```
- **报告生成示例**:
```python
async('tasks.generate_report', user_id)
```
## 11. 总结
Django Q 提供了强大的异步任务处理和调度功能,支持多种中间件和分布式集群,适用于需要高性能和高可靠性的 Django 项目。通过简洁的配置和丰富的功能,Django Q 能够满足多种任务处理需求。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
49 页请下载阅读 -
文档评分














Django Q Documentation
Release 0.7.13