Django Q Documentation
Release 0.7.14
527.40 KB
73 页
0 下载
274 浏览
0 评论
0 收藏
所属分类:
后端开发 / Python / Django
| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .epub | 3 |
| 摘要 | ||
Django Q 是一个基于 Django 的任务队列、调度和工作进程应用,支持多进程、异步任务、计划任务等功能。文档介绍了其安装配置、功能特性、兼容性以及使用场景,包括任务加密、结果存储、任务分组和链式任务等。用户可以通过 Django 管理命令启动集群,并根据需求配置任务队列参数。 | ||
| AI总结 | ||
## Django Q 0.7.14 文档总结
### 概述
Django Q 是一个基于 Django 的任务队列、调度和工作队列应用,使用 Python 的 multiprocessing 模块实现。它支持异步任务、计划任务、任务分组和链式任务等功能。
### 核心特性
- **多进程工作池**:使用 multiprocessing 模块管理多个 worker 进程。
- **异步任务**:支持异步任务处理。
- **计划和重复任务**:支持 scheduled 和 repeated 任务。
- **加密和压缩**:任务数据经过加密和压缩处理。
- **结果存储**:支持将任务结果存储在数据库或缓存中。
- **结果钩子和分组**:支持任务完成后的钩子函数和任务分组。
- **Django Admin 集成**:提供 Django 管理界面。
- **多实例支持**:支持 PaaS 环境下的多实例部署。
- **多集群监控**:支持多集群监控和管理。
- **多种消息队列**:支持 Redis、Disque、IronMQ、SQS、MongoDB 和 ORM 等多种消息队列。
### 兼容性
- **Python**:支持 Python 2.7 和 3.5。
- **Django**:兼容 Django 1.8.8 和 1.9.1。
- **依赖**:
- Django
- Django-picklefield(用于存储任务参数和结果)
- Arrow(用于任务调度)
- Blessed(用于监控界面)
### 安装
1. 使用 pip 安装:
```bash
$ pip install Django-q
```
2. 将 Django_q 添加到项目 `settings.py` 的 `INSTALLED_APPS`:
```python
INSTALLED_APPS = (
# 其他应用
'django_q',
)
```
3. 运行 Django 迁移:
```bash
$ python manage.py migrate
```
### 配置
通过 `Q_CLUSTER` 字典在 `settings.py` 中配置集群参数:
```python
Q_CLUSTER = {
'name': 'myproject',
'workers': 8,
'recycle': 500,
'timeout': 60,
'compress': True,
'save_limit': 250,
'queue_limit': 500,
'cpu_affinity': 1,
'label': 'Django Q',
'redis': {
'host': '127.0.0.1',
'port': 6379,
'db': 0,
},
}
```
### 启动集群
使用 Django 的 `manage.py` 命令启动集群:
```bash
$ python manage.py qcluster
```
启动后会输出集群状态和 worker 进程信息。
### 多集群
- 多个集群可以运行在不同的机器上,但需要满足以下条件:
- 使用相同的 Broker。
- 使用相同的集群名称。
- 分享相同的 SECRET_KEY。
### 使用示例
1. **发送邮件**:
```python
from django_q.tasks import async, schedule
from django.utils import timezone
def welcome_mail(user):
# 发送立即邮件
async('django.core.mail.send_mail', 'Welcome', 'Welcome message', 'from@example.com', [user.email])
# 安排一小时后发送后续邮件
schedule('django.core.mail.send_mail', 'Follow up', 'Tips message', 'from@example.com', [user.email],
schedule_type=Schedule.ONCE, next_run=timezone.now() + timedelta(hours=1))
```
2. **处理信号**:
```python
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django_q.tasks import async
@receiver(pre_save, sender=User)
def handle_user_save(sender, instance, **kwargs):
async('some_task', instance.id)
```
### 注意事项
- **任务加密**:任务数据经过加密,无法解密的任务将被丢弃或标记为失败。
- **进程管理**:集群内部使用 multiprocessing 模块管理进程,支持自动回收和重启。
- **连接池**:Django Q 尽量复用 Broker 连接,避免连接耗尽。
### 总结
Django Q 是一个功能强大的任务队列和调度工具,适用于需要异步任务处理和计划任务的 Django 项目。它支持多种消息队列、多集群部署和丰富的配置选项,能够满足大多数任务处理需求。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
66 页请下载阅读 -
文档评分














Django Q Documentation
Release 0.4.6