搜索

epub文档 Django Q Documentation Release 0.2.2

188.69 KB 25 页 0 下载 113 浏览 0 评论 0 收藏
语言 格式 评分
英语
.epub
3
摘要
Django Q 是一个用于 Django 框架的原生任务队列和工作器应用程序,基于 Python 多进程。它支持异步任务、计划和重复任务、加密压缩包、任务结果数据库等功能,并与 Redis 集成。文档介绍了其安装配置、任务处理机制、集群管理、监控以及与 Django 管理界面的集成。用户可以通过命令启动集群,并监控任务队列和结果队列的状态。
AI总结
# Django Q 0.2.2 文档总结 ## 概述 Django Q 是一个基于 Django 的任务队列和工作进程应用,使用 Python 多进程技术实现。 ## 核心功能 - **多进程工作池**:支持多个 worker 并行处理任务。 - **异步任务**:通过 Redis 进行任务分发。 - **任务调度与重复执行**:支持定时和周期性任务。 - **加密与压缩**:任务数据经过加密和压缩,确保安全性和传输效率。 - **结果存储**:成功和失败的任务结果均存储在数据库中。 - **结果钩子**:允许自定义任务结果处理逻辑。 - **Django Admin 集成**:通过 Django 的 admin 界面管理任务。 - **多集群监控**:支持多集群管理,实时监控任务状态。 - **Redis 支持**:使用 Redis 作为任务队列和结果存储的后端。 ## 安装 1. 使用 pip 安装:`pip install Django-q` 2. 将 `django_q` 添加到 `INSTALLED_APPS`: ```python INSTALLED_APPS = ( # 其他应用 'django_q', ) ``` 3. 运行 Django 迁移创建数据库表:`python manage.py migrate` ## 配置 通过 `Q_CLUSTER` 字典在 `settings.py` 中进行配置: ```python Q_CLUSTER = { 'name': 'myproject', 'workers': 8, # 工作进程数,默认为 CPU 核心数 'recycle': 500, # 每个 worker 处理的任务数,默认 500 'timeout': 60, # 任务超时时间,默认 60 秒 'compress': True, # 是否压缩任务数据,默认 False 'save_limit': 250, # 成功任务保存限制,默认 250 'label': 'Django Q', # admin 界面显示的标签 'redis': { # Redis 连接配置 'host': '127.0.0.1', 'port': 6379, 'db': 0, } } ``` ## 任务处理 - 使用 `async()` 函数异步提交任务: ```python from django_q import async async('math.copysign', 2, -2) ``` - 通过 `result()` 获取任务结果: ```python from django_q import result task_result = result(task_id) ``` - 支持结果钩子函数,用于自定义任务结果处理。 ## 监控与管理 - **Stat 类**:用于获取集群状态信息: ```python from django_q.monitor import Stat for stat in Stat.get_all(): print(stat.cluster_id, stat.status) ``` - **Admin 界面**: - 显示成功、失败和已调度的任务。 - 提供任务详细信息查看和删除功能。 ## 注意事项 - 使用 `SECRET_KEY` 加密任务数据,确保其安全性。 - 任务队列和结果队列可能会积压,需监控 `TQTask` 和 `RQ` 指标。 - 集群停止时会自动终止所有工作进程并清理资源。 ## 兼容性 - 支持 Python 2.7 和 3.4。 - 支持 Django 1.7.8 和 1.8.2。 - 依赖库: - Django - Django-picklefield - Redis-py - Arrow ## 总结 Django Q 是一个功能强大的任务队列解决方案,适用于需要异步处理和任务调度的 Django 项目。通过简洁的配置和强大的监控功能,用户可以轻松管理和优化任务执行流程。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 18 页请下载阅读 -
文档评分
请文明评论,理性发言.