Django Q Documentation
Release 0.7.10
518.39 KB
67 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .epub | 3 |
摘要 | ||
Django Q 是一个 native 的 Django 任务队列、调度器和 worker 应用,使用 Python multiprocessing。其功能包括多处理 worker 池、异步任务、定时和重复任务、加密和压缩数据包、结果钩子、Django Admin 集成、多集群监控等。支持 Redis、Disque、IronMQ、SQS、MongoDB 或 ORM 等多种消息代理。配置通过 settings.py 中的 Q_CLUSTER 字典进行,支持多种参数如 workers、recycle、timeout 等。安装要求添加 django_q 到 INSTALLED_APPS,并运行迁移命令。文档强调与 Django 的兼容性,支持 Django 1.7.10、1.8.5 和 1.9a1。管理界面提供成功任务、失败任务和定时任务的管理功能。 | ||
AI总结 | ||
《Django Q Documentation Release 0.7.10》文档总结:
### 概述
Django Q 是一个本地 Django 任务队列、调度和工作器应用,支持多进程 worker 池、异步任务、定时任务、加密和压缩 Packages、失败处理、数据库或缓存结果存储、结果 Hooks 和组,以及 Django Admin 集成。它兼容多种消息 Broker,如 Redis、Disque、IronMQ、SQS、MongoDB 或 ORM。
### 主要特性
- **多进程 worker 池**:支持多 worker 处理任务。
- **异步和定时任务**:支持异步执行、定时任务和重复任务。
- **加密和压缩**:任务包加密和压缩。
- **失败处理**:任务失败时记录错误信息。
- **结果存储**:支持数据库或缓存存储结果。
- **Hooks 和组**:支持任务执行前后触发 Hooks,及任务分组。
- **Admin 集成**:通过 Django Admin 查看成功、失败和调度任务。
- **监控和 PaaS 兼容**:支持多集群监控,兼容 PaaS 部署。
### 安装
1. 使用 pip 安装:`pip install django-q`
2. 添加 `django_q` 到 `INSTALLED_APPS`
3. 运行迁移命令:`python manage.py migrate`
4. 选择并配置消息 Broker,安装对应的客户端库。
### 配置
在 `settings.py` 中通过 `Q_CLUSTER` 字典配置:
- `name`:项目名称,用于区分不同项目(默认为 'default')。
- `workers`:worker 数量,默认为 CPU 核心数。
- `recycle`:worker 处理任务数后重启(默认 500)。
- `timeout`:任务执行超时时间(默认 60 秒)。
- `compress`:是否压缩任务包(默认 True)。
- `save_limit`:成功任务的最大保存数量(默认 250)。
- `queue_limit`:队列中任务的最大数量(默认 500)。
- `redis`:Redis Broker 配置(如 host、port、db)。
### Broker 支持
Django Q 支持多种 Broker:
- **Redis**:默认 Broker,但不支持消息回执。
- **Disque**:支持消息回执。
- **MongoDB**:支持高吞吐量。
- **ORM**:使用 Django ORM 存储任务。
### 任务调度示例
1. **异步任务**:
```python
from django_q.tasks import async
async('django.core.mail.send_mail', '邮件主题', '邮件内容', '发件人', ['收件人'])
```
2. **定时任务**:
```python
from django_q.tasks import schedule
from django.utils import timezone
schedule('myapp.tasks.my_function', schedule_type=Schedule.ONCE,
next_run=timezone.now() + timedelta(hours=1))
```
3. **信号触发任务**:
```python
from django.db.models.signals import post_save
from django.dispatch import receiver
from django_q.tasks import async
@receiver(post_save, sender=User)
def send_welcome_email(sender, instance, created, **kwargs):
if created:
async('django.core.mail.send_mail', 'Welcome', '欢迎内容',
'from@example.com', [instance.email])
```
### Admin 集成
Django Q 在 Admin 页面提供了以下模型:
- **成功任务**:显示所有成功执行的任务,支持按名称、函数或组筛选。
- **失败任务**:显示执行失败的任务,可从 Admin 重试失败任务。
- **调度任务**:显示定时任务,支持重试或删除。
### 兼容性
- **Python**:支持 2.7 和 3.5。
- **Django**:兼容 1.7.10、1.8.5,部分支持 1.9a1。
- **依赖包**:包括 `django-picklefield`、`arrow`、`blessed` 等。
### 总结
Django Q 是一个功能强大、灵活且易于集成的任务队列系统,适合处理异步任务、定时任务和重复任务。它支持多种 Broker,并提供了完善的 Admin 集成和监控功能,适合大规模应用场景。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
60 页请下载阅读 -
文档评分