Django Q Documentation
Release 0.7.9
514.67 KB
62 页
0 下载
120 浏览
0 评论
0 收藏
所属分类:
后端开发 / Python / Django
| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .epub | 3 |
| 摘要 | ||
Django Q 是一个基于 Django 的任务队列、调度和工作者应用,使用 Python 的 multiprocessing 模块。文档详细介绍了其安装、配置、功能模块以及在不同操作系统上的兼容性和已知问题。主要内容包括:支持的第三方库(如 Django、Django-picklefield、Arrow、Blessed 等)、任务处理示例、配置参数(如 workers、recycle、timeout 等)、任务调度与结果处理方法,以及对 Redis、Disque、MongoDB 等消息队列的支持。 | ||
| AI总结 | ||
# Django Q 0.7.9 发布文档总结
## 1. 项目简介
Django Q 是一个基于 Django 的任务队列、调度程序和工人应用程序,使用 Python 多进程技术。它支持异步任务、计划任务、加密压缩、结果存储等功能,并提供 Django Admin 集成和多集群监控。
## 2. 兼容性
- **操作系统**:
- **OS X**:不支持 `multiprocessing.Queue.qsize()` 和 `multiprocessing.cpu_count()`,可通过安装 `psutil` 解决。
- **Windows**:不支持集群和工人的多进程代码(因无法fork),可通过设置 `sync=True` 进行开发和测试。
- **Python 版本**:支持 Python 2.7 和 3.5,兼容 Django 1.7.10 和 1.8.4。
- **Django 版本**:兼容 Django 1.7.10 和 1.8.5,Django 1.9a1 已测试但未正式支持。
## 3. 功能亮点
- **核心功能**:
- 多进程工作池
- 异步任务
- 计划和重复任务
- 加密和压缩任务包
- 失败与成功数据库或缓存存储
- 结果钩子和组
- Django Admin 集成
- 多集群监控
- **任务存储**:支持 Redis、Disque、IronMQ、SQS、MongoDB 或 ORM。
- **结果存储**:支持数据库或缓存。
## 4. 安装与配置
- **安装**:
```bash
$ pip install Django-q
```
- **配置**:
- 将 `Django_q` 添加到 `INSTALLED_APPS`。
- 运行 Django 迁移命令:
```bash
$ python manage.py migrate
```
- 配置消息队列并安装相应客户端库。
- **示例配置**:
```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,
}
}
```
## 5. 依赖项
- **必选依赖**:
- Django
- django-picklefield
- Arrow
- Blessed
- **可选依赖**:
- `psutil`:用于 CPU 计数和替代某些系统功能。
- 第三方消息队列客户端(如 Redis、MongoDB 等)。
## 6. 示例与使用场景
- **邮件发送**:
```python
from django.utils import timezone
from django_q.tasks import async, schedule
from django_q.models import Schedule
def welcome_mail(user):
# 发送立即邮件
async('django.core.mail.send_mail', 'Welcome', msg, 'from@example.com', [user.email])
# 定时发送邮件
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))
```
- **信号处理**:
```python
from django.db.models.signals import pre_save
from django.dispatch import receiver
from django_q.tasks import async
@receiver(pre_save)
def pre_save_handler(sender, instance, **kwargs):
async('some_task', 'args', kwargs)
```
## 7. 注意事项
- **任务加密**:任务无法解密时将被丢弃或标记为失败。
- **队列限制**:避免设置过高的队列限制,以免任务超时。
- **重复任务**:重复任务可能导致数据库错误,但最终结果以第一次为准。
## 8. 监控与调试
- **监控**:支持通过终端布局查看集群状态。
- **日志**:记录任务状态和错误信息。
## 9. 未来计划
- **扩展支持**:计划增加更多消息队列支持。
- **兼容性**:未来版本可能不再正式支持 Django 1.7,建议关注最新版本的兼容性。
如遇到问题,请提交 GitHub 问题报告:[https://github.com/Koed00/django-q](https://github.com/Koed00/django-q)。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
55 页请下载阅读 -
文档评分














Django Q Documentation
Release 0.7.9