pdf文档 Django Q Documentation Release 0.7.10

406.50 KB 52 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
Django Q is a Django task queue and scheduler using Python multiprocessing. It supports asynchronous tasks, scheduled and repeated tasks, encrypted packages, result hooks, Django Admin integration, and multiple cluster monitoring. It is compatible with various brokers like Redis, Disque, IronMQ, SQS, and MongoDB. The installation involves pip installation, adding 'django_q' to INSTALLED_APPS, running migrations, and configuring a message broker. The admin pages allow viewing successful, failed, and scheduled tasks. Configuration is handled via the Q_CLUSTER dictionary in settings.py.
AI总结
# 《Django Q Documentation Release 0.7.10》总结 ## 1. 概述 Django Q 是一个基于 Python 多进程的原生 Django 任务队列、调度器和工作器应用程序,支持多种功能,包括异步任务、定时任务、结果存储、监控等。当前版本为 0.7.10,兼容 Python 2.7 和 3.5,以及 Django 1.7.10 和 1.8.5。 --- ## 2. 主要功能 - **核心功能**: - 多进程工作池 - 异步任务、定时任务和重复任务 - 任务加密和压缩 - 支持任务失败和成功记录(数据库或缓存) - 结果钩子和任务分组 - 集成 Django 管理界面 - 多集群监控 - **支持的消息代理**: - Redis、Disque、IronMQ、Amazon SQS、MongoDB、ORM 等。 --- ## 3. 安装与配置 ### 3.1 安装 1. 使用 pip 安装最新版本: ```bash $ pip install django-q ``` 2. 将 `django_q` 添加到 `INSTALLED_APPS`: ```python INSTALLED_APPS = ( # 其他应用 'django_q', ) ``` 3. 迁移数据库: ```bash $ python manage.py migrate ``` 4. 选择并配置消息代理,并安装对应的客户端库。 ### 3.2 配置 在 `settings.py` 中配置 `Q_CLUSTER` 字典: ```python Q_CLUSTER = { 'name': 'myproject', # 项目名称,用于区分不同项目 'workers': 8, # 工作进程数,默认为 CPU 核心数 'recycle': 500, # 工作进程处理任务数后重启 'timeout': 60, # 任务超时时间(秒) 'compress': True, # 是否压缩任务数据 'save_limit': 250, # 成功任务的最大保存数量 'cpu_affinity': 1, # CPU亲和性 'label': 'Django Q', # 集群名称 'redis': { # Redis 配置示例 'host': '127.0.0.1', 'port': 6379, 'db': 0, } } ``` - **配置选项**: - `name`:用于区分不同项目的名称,部分代理类型中作为队列名。 - `workers`:默认为 CPU 核心数,可手动设置。 - `timeout`:任务超时时间,若设置为 `None` 表示不限制。 --- ## 4. 任务功能 - **异步任务**: - 使用 `async()` 函数执行异步任务,支持传递参数和选项。 - 示例: ```python opts = {'hook': 'hooks.print_result', 'group': 'math', 'timeout': 30} async('math.modf', 2.5, q_options=opts) ``` - **可迭代任务**: - 使用 `async_iter()` 批量异步执行任务。 - 示例: ```python iter = [i for i in range(100)] id = async_iter('math.floor', iter) result_list = result(id, wait=1000) ``` --- ## 5. 管理界面 Django Q 使用 Django 的默认模型管理界面,提供以下功能: 1. **成功任务**: - 查看详情或删除成功任务。 - 支持按名称、函数名或组筛选。 - 使用 `save_limit` 限制最大保存数量。 2. **失败任务**: - 查看失败原因并重新提交任务。 3. **定时任务**: - 查看、创建、编辑或删除定时任务。 --- ## 6. 监控 - 使用以下命令启动监控工具: ```bash $ python manage.py qmonitor ``` - 监控功能: - 显示集群实时状态信息。 - 支持的状态:启动中、空闲、运行中、停止中、已停止。 - 其他信息:主机名、集群 ID、工作进程数、任务队列大小。 --- ## 7. 消息代理 支持以下消息代理: 1. **Redis**: - 需要 `redis` 客户端库。 2. **Disque**: - 支持批量取队。 - 需要 `redis` 客户端库。 3. **IronMQ**: - HTTP 基础的队列服务,支持 Heroku。 - 需要 `iron-mq` 客户端库。 4. **Amazon SQS**: - 主要特点:稳定、经济实惠。 - 最大消息大小为 256KB。 - 支持批量取队(最多 10 条消息)。 - 需要 `boto3` 客户端库。 5. **MongoDB**: - 高扩展性 NoSQL 数据库,适合作为消息代理。 - 需要 `pymongo` 驱动。 --- ## 8. 其他注意事项 - **结果存储**: - 支持数据库或缓存后端。 - 使用 `cached` 参数可以将结果存储在缓存中。 - **兼容性**: - 测试通过 Django 1.9a1,理论上兼容更高版本。 - 需要 Django 的缓存框架配置。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 45 页请下载阅读 -
文档评分
请文明评论,理性发言.