pdf文档 Django Q Documentation Release 0.2.2

208.74 KB 24 页 0 评论
语言 格式 评分
英语
.pdf
3
摘要
文档介绍了Django Q,一个基于Python multiprocessing的原生Django任务队列和工作应用。其功能包括多进程工作者池、异步任务、定期和重复任务、加密和压缩的任务包、失败和成功数据库、结果钩子以及与Django Admin的集成。文档详细说明了安装步骤、配置选项、管理界面以及任务调度和监控功能。Django Q支持Python 2.7和3.4,依赖Django、django-picklefield、Redis-py和Arrow等库,并提供了通过Admin页面查看成功任务、失败任务和定时任务的能力。
AI总结
### Django Q 文档总结(版本 0.2.0) **Django Q** 是一个原生 Django 任务队列和工作应用,利用 Python 多处理功能。以下是其核心功能和配置信息的总结: --- #### **1. 功能概述** - **多进程 worker 池**:支持多个 worker 进程同时处理任务。 - **异步任务**:支持将任务异步执行。 - **定时和重复任务**:支持根据时间计划和重复执行任务。 - **加密和压缩**:任务包以加密和压缩形式传输,并使用 Django 的 `SECRET_KEY` 保证安全。 - **失败和成功数据库**:记录任务的执行结果,失败任务会自动保存,成功任务可配置保存数量。 - **结果 Hook**:支持在任务完成后执行 Hook 函数。 - **Django Admin 集成**:提供 Admin 界面管理任务和调度。 - **PaaS 兼容性**:支持多实例部署,具备集群监控功能。 - **Redis 支持**:依赖 Redis 作为消息队列。 - **兼容性**:支持 Python 2.7 & 3.4,Django 1.7.8 & 1.8.2。 --- #### **2. 安装与配置** - **安装**: 1. 使用 pip 安装:`pip install django-q` 2. 在 `settings.py` 中添加 `'django_q'` 到 `INSTALLED_APPS`。 3. 运行迁移命令:`python manage.py migrate`。 4. 确保 Redis 服务已运行。 - **配置**: - **Redis 设置**(默认值): ```python Q_CLUSTER = { 'name': 'DJRedis', 'workers': 4, 'timeout': 90, 'django_redis': 'default' } ``` - **成功任务保存策略**:通过 `save_limit` 配置最大保存数量(默认 250)。 - **失败任务**:始终保存,用户可通过 Admin 界面重新提交。 --- #### **3. 任务管理** - **任务属性**: - `result`:存储任务结果或错误信息。 - `kwargs`:任务函数的关键字参数。 - `started`:任务开始时间。 - `stopped`:任务结束时间。 - `success`:任务是否成功执行。 - `time_taken()`:计算任务执行时间(单位:秒)。 - **任务结果**: - **成功任务**:通过 `Success` 代理模型管理。 - **失败任务**:通过 `Failure` 代理模型管理,支持重新提交。 --- #### **4. 调度功能** - **调度类型**:支持一次性、定时(如每日、每周)和重复执行。 - **调度方法**: ```python # 使用 schedule装饰器 schedule('math.copysign', 2, -2, hook='hooks.print_result', schedule_type=Schedule.DAILY) # 或直接创建 Schedule 对象 Schedule.objects.create(func='math.copysign', hook='hooks.print_result', args='2,-2', schedule_type=Schedule.DAILY) ``` - **调度参数**: - `func`:需要执行的函数(字符串格式,如 'math.copysign')。 - `args`:函数参数。 - `hook`:任务完成后的 Hook 函数。 - `schedule_type`:调度类型,支持 `ONCE`、`DAILY` 等。 - `repeats`:任务重复执行的次数。 --- #### **5. 监控与Admin界面** - **监控功能**: - 提供 `Stat` 类用于获取集群状态,包括: - `task_q_size`:任务队列中任务的数量。 - `done_q_size`:结果队列中任务的数量。 - `pusher`:推送进程的 PID。 - `monitor`:监控进程的 PID。 - `sentinel`:Sentinel 进程的 PID。 - `workers`:当前集群中 worker 的 PID 列表。 - 方法: - `empty_queues()`:检查任务队列是否为空。 - `get(cluster_id)`:获取指定集群的状态。 - `get_all()`:获取所有活跃集群的状态。 - **Admin界面**: Django Q 使用 Django 的默认模型 Admin 管理界面,提供以下功能: - **成功任务**:展示所有成功执行的任务,可查看详情或删除。 - **失败任务**:展示所有失败的任务,可通过 Admin 动作菜单重新提交。 - **调度任务**:管理定时任务,支持增删改查。 --- #### **6. 依赖项** - **Python 包**: - `django-picklefield`:用于存储任务参数和结果。 - `redis-py`:Redis 客户端。 - `arrow`:用于时间计算。 - **Redis**:需要单独安装和配置。 --- #### **7. 其他说明** - **标签**:Admin 页面的默认标签为 `Django Q`,可通过 `Q_LABEL` 配置更改。 - **Sentinel**:Sentinel 进程会根据需要启动新的 worker 进程。 --- Django Q 是一个功能强大、易于集成的任务队列系统,适用于需要处理异步任务和定时任务的 Django 项目。通过 Redis 作为消息队列,它提供了高效的任务分发和执行机制,同时 Admin 界面简化了任务管理和监控。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 17 页请下载阅读 -
文档评分
请文明评论,理性发言.