epub文档 Django Q Documentation Release 0.4.6

203.66 KB 42 页 0 评论
语言 格式 评分
英语
.epub
3
摘要
文档详细介绍了Django Q 0.4.6版本的功能和使用方法。Django Q是一个基于Django的任务队列应用,支持多进程工作池、异步任务和定时任务。通过Redis作为消息代理,集群监控可以实时查看任务执行状态,并在Django Admin页面管理成功、失败和定时任务。文档还指导了安装步骤和配置选项,如workers数量、超时设置、Redis连接等,以确保高效的任务处理。
AI总结
《Django Q Documentation Release 0.4.6》文档总结如下: --- ### 1. **Django Q 概述** Django Q 是一个基于 Python 多进程的原生 Django 任务队列和 worker 应用程序。它支持以下功能: - 多进程 worker 池 - 异步任务 - 定时任务和重复任务 - 加密和压缩任务包 - 失败和成功任务数据库记录 - 结果钩子和任务组 - 集成 Django Admin - 支持多实例部署 - 多集群监控 - 使用 Redis 作为消息代理 - 支持 Python 2.7 和 3.4,以及 Django 1.7.9 和 1.8.3。 --- ### 2. **核心功能** #### **任务队列** - 支持通过 `async()` 函数创建异步任务。 - 支持通过 `schedule()` 函数创建定时任务,任务可以一次性或重复执行。 - 支持任务组(Groups),可同时执行多个任务。 #### **监控** - 通过 `python manage.py qmonitor` 命令启动监控面板,查看集群状态。 - 状态包括:正在启动(Starting)、空闲(Idle)、处理任务(Working)、停止中(Stopping)、已停止(Stopped)。 - 监控面板显示主机、集群 ID、当前状态、worker 池大小等信息。 #### **Admin 页面** - **成功任务**:展示所有成功执行的任务,可按名称、函数和组进行搜索和排序。 - **失败任务**:展示因错误未完成的任务,可通过 Admin 动作菜单重新提交失败的任务。 - **定时任务**:允许创建、编辑或删除定时任务,支持设置重复次数(`repeats` attribute)。 #### **配置** - 通过 `Q_CLUSTER` 字典在 `settings.py` 中配置。 - 支持 Redis 连接设置,例如主机(`host`)、端口(`port`)、数据库(`db`)等。 - 其他配置项包括: - `name`:用于区分同一 Redis 服务器上的不同项目。 - `workers`:指定 worker 的数量。 - `timeout`:任务超时时间。 - `compress`:是否压缩任务数据。 - `save_limit`:成功任务的最大保留数量。 - `cpu_affinity`:设置每个 worker 的 CPU_door 数。 #### **依赖项** - **必需**: - Redis 服务。 - Django-picklefield:用于在数据库中存储任务参数和结果。 - Redis-py:Redis 的 Python 客户端。 - Arrow:用于任务调度。 - **可选**: - Psutil:提供 CPU_affinity 功能。 - Hiredis:提升 Redis 解析性能。 #### **安装** 1. 安装 Django Q:`pip install django-q`。 2. 在 `settings.py` 中添加 `django_q` 到 `INSTALLED_APPS`。 3. 运行迁移命令:`python manage.py migrate`。 4. 确保 Redis 服务已启动,并在 `Q_CLUSTER` 中配置 Redis 连接信息。 --- ### 3. **示例** #### **异步任务** ```python from django_q import async async('django.core.mail.send_mail', 'Subject', 'Message', 'from@example.com', ['to@example.com']) ``` #### **定时任务** ```python from datetime import timedelta from django.utils import timezone from django_q import schedule schedule('myapp.tasks.my_task', schedule_type=Schedule.DAILY, next_run=timezone.now() + timedelta(hours=1)) ``` #### **信号(Signals)** ```python from django.db.models.signals import pre_save from django.dispatch import receiver from django_q import async @receiver(pre_save, sender=User) def user_pre_save(sender, instance, **kwargs): async('myapp.tasks.send_notification', instance.id) ``` --- ### 4. **架构** Django Q 使用 Python 的 `multiprocessing` 模块管理 worker 进程,支持多集群部署和高可用性。 --- 以上是文档的核心内容和关键信息,涵盖了安装、配置、功能、监控和示例等方面。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 35 页请下载阅读 -
文档评分
请文明评论,理性发言.