Django Q Documentation
Release 0.7.10
518.39 KB
67 页
0 下载
133 浏览
0 评论
0 收藏
所属分类:
后端开发 / Python / Django
| 语言 | 格式 | 评分 |
|---|---|---|
英语 | .epub | 3 |
| 摘要 | ||
Django Q 是一个基于 Django 的任务队列、调度和工人应用程序,使用 Python 的 multiprocessing 模块管理任务。文档介绍了其安装、配置、功能以及在不同操作系统上的兼容性问题。主要功能包括多进程任务处理、异步任务、计划任务、加密压缩包、结果存储、Django 管理界面集成等。文档还提到了在 OS X 和 Windows 上的已知问题及解决方法,并提供了配置示例和使用案例。 | ||
| AI总结 | ||
## Django Q 0.7.10 发布说明及使用指南
### 项目简介
Django Q 是一个基于 Django 的任务队列、调度程序和工人应用程序,使用 Python 的 multiprocessing 模块来管理任务处理。
### 功能特点
- ** multiprocessing 工作池**:支持多进程任务处理。
- **异步任务**:允许异步执行任务。
- **计划和重复任务**:支持任务的计划和重复执行。
- **加密和压缩包**:任务数据加密和压缩。
- **结果存储**:任务结果可存储于数据库或缓存。
- **结果钩子和组**:支持任务结果的钩子和分组处理。
- **Django 管理界面集成**:提供 Django 后台管理界面。
- **多实例支持**:适用于多平台即服务(PaaS)环境。
- **多集群监控**:支持多集群监控。
- **多种消息队列**:支持 Redis、Disque、IronMQ、SQS、MongoDB 或 ORM。
### 兼容性
- **Python 版本**:支持 Python 2.7 和 3.5,兼容 Django 1.7.10 和 1.8.5。
- **操作系统**:
- **OS X**:multiprocessing.Queue.qsize() 和 multiprocessing.cpu_count() 不可用,建议安装 psutil。
- **Windows**:不支持 multiprocessing.forking,建议设置 sync=True 进行同步调用。
### 安装与配置
1. **安装**:
```bash
$ pip install Django-q
```
2. **配置**:
- 将 django_q 添加到项目 settings.py 的 INSTALLED_APPS 中。
- 运行 Django 迁移创建数据库表:
```bash
$ python manage.py migrate
```
- 配置消息队列并安装相应的客户端库。
### 配置参数
- **name**:项目名称,用于区分不同项目。
- **workers**:指定 worker 的数量,默认为 CPU 核心数。
- **recycle**:每个 worker 处理任务数达到 recycle 后会重新启动。
- **timeout**:任务超时时间,默认 60 秒。
- **compress**:是否压缩任务数据,默认为 True。
- **save_limit**:保留结果的数量,默认 250。
- **queue_limit**:队列最大任务数,默认 500。
- **cpu_affinity**:指定 worker 使用的 CPU 核心,默认为 1。
- **label**:任务队列的标签,默认为 "Django Q"。
- **redis 配置**:指定 Redis 服务的连接信息。
### 使用示例
- **发送邮件**:
```python
from django_q.tasks import async, schedule
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', '使用说明', '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, sender=User)
def pre_user_save(sender, instance, **kwargs):
async('some.task', 'args', kwargs)
```
### 注意事项
- **多集群**:多个集群可以使用相同的队列,但需确保使用相同的 broker 和配置。
- **性能优化**:通过调整 workers、recycle 和 timeout 参数优化任务处理。
- **错误处理**:任务无法解密时会自动丢弃或标记为失败。
### 其他
- **进程管理**:Django Q 内置健康检查和进程管理,不建议使用外部进程管理工具(如 Supervisor)。
- **依赖管理**:参考 requirements.txt 确保依赖版本与测试环境一致。
如遇问题,请提交至 GitHub 仓库 [https://github.com/Koed00/django-q]。 | ||
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
60 页请下载阅读 -
文档评分














Django Q Documentation
Release 0.7.10