Django Q Documentation
Release 0.7.12
527.33 KB
73 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .epub | 3 |
摘要 | ||
Django Q是一款原生Django任务队列、调度器和worker应用,使用Python多处理技术支持异步任务、定时任务和重复任务。它支持多种消息代理如Redis、Disque、IronMQ、SQS和MongoDB,提供加密和压缩功能,并通过Django Admin提供监控和管理功能。Django Q支持多个实例和集群监控,同时兼容多种Django版本。安装步骤包括使用pip安装、添加到INSTALLED_APPS和运行迁移。配置通过Q_CLUSTER字典在settings.py中完成,支持诸多参数如worker数量、超时、压缩和重试等。文档还提供了使用示例,如异步发送邮件和处理Django信号。 | ||
AI总结 | ||
以下是对《Django Q Documentation Release 0.7.12》文档内容的总结:
---
### **Django Q 概述**
Django Q 是一个原生 Django 任务队列、计划程序和工人(Worker)应用,使用 Python 多处理来实现。它支持以下功能:
- **多处理 Worker 池**
- **异步任务**
- **定时和重复任务**
- **加密和压缩功能**
- **失败和成功结果记录**
- **钩子、任务组和任务链**
- **Django Admin 集成**
- **PaaS 兼容,支持多实例和多集群**
- **支持 Redis、Disque、IronMQ、SQS、MongoDB 或 ORM**
- **Rollbar 支持**
它兼容 Python 2.7 和 3.5,测试通过 Django 1.8.8 和 1.9.1。
---
### **安装与配置**
1. **安装**:
- 使用 pip 安装:`pip install django-q`
- 在 `settings.py` 中添加 `'django_q'` 到 `INSTALLED_APPS`
- 运行迁移命令:`python manage.py migrate`
- 选择一个消息代理(如 Redis),并安装对应的客户端库。
2. **配置**:
- 在 `settings.py` 中通过 `Q_CLUSTER` 字典配置。
- 示例配置:
```python
Q_CLUSTER = {
'name': 'myproject', # 项目名称,区分使用相同代理的项目
'workers': 8, # Worker 数量,,默认为 CPU 核数
'recycle': 500, # Worker 处理任务数后重新启动
'timeout': 60, # 任务超时时间(秒)
'compress': True, # 是否压缩任务数据
'save_limit': 250, # 成功任务的最大保存数量
'queue_limit': 500, # 队列中的最大任务数
'redis': { # Redis 配置
'host': '127.0.0.1',
'port': 6379,
'db': 0,
}
}
```
- 所有配置项均为可选,部分项(如 `name`、`workers`)有默认值。
---
### **监控与管理**
- 使用 `python manage.py qmonitor` 启动集群监控,显示实时信息。
- 监控信息包括:
- **Host**:运行集群的服务器主机名
- **Id**:集群 ID(与进程 ID 一致)
- **State**:集群状态(启动中、空闲、运行中、停止中、已停止)
- **Pool**:Worker 池信息
---
### **Admin 页面**
- Django Q 通过 Django 的模型 Admin 提供任务管理功能,包括:
- **成功任务**:显示所有已成功执行的任务,支持按名称或组筛选。
- **失败任务**:显示因错误未完成的任务,可通过 Admin 操作重新提交。
- **已安排任务**:显示计划任务。
---
### **示例与使用**
1. **异步任务**:
- 使用 `async` 实现异步调用:
```python
from django_q.tasks import async
async('django.core.mail.send_mail', '主题', '内容', '发件人', '收件人')
```
2. **定时任务**:
- 使用 `schedule` 实现定时任务:
```python
from django_q.tasks import schedule
schedule('django.core.mail.send_mail', 'Follow up', ... , next_run=timezone.now() + timedelta(hours=1))
```
3. **信号集成**:
- 在 Django 模型信号中使用异步任务,避免延迟模型保存或创建:
```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 async_task(sender, instance, **kwargs):
async('myapp.tasks.my_function', instance)
```
---
### **模块与索引**
- 提供了丰富的 API,包括任务异步执行、任务组、计划任务等功能。
- 支持的类和方法:
- `Async`、`Chain`、`Cluster`、`Schedule` 等类
- `async()`、`async_chain()`、`schedule()` 等函数
- 任务状态管理:`enqueue()`, `dequeue()`, `get_result()`, `delete_group()` 等
---
### **相关库与依赖**
- **依赖库**:`django-picklefield` 和 `arrow`。
- **兼容性**:支持 Django 1.8.8 和 1.9.1,新版本不再测试 Django 1.7。
---
以上是文档的核心内容和关键信息,涵盖了 Django Q 的功能、安装、配置、监控、Admin 集成及实践示例。 |
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余
66 页请下载阅读 -
文档评分