epub文档 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 页请下载阅读 -
文档评分
请文明评论,理性发言.