搜索

epub文档 Django Q Documentation Release 0.7.14

527.40 KB 73 页 0 下载 273 浏览 0 评论 0 收藏
语言 格式 评分
英语
.epub
3
摘要
Django Q 是一个基于 Django 的任务队列、调度和工作进程应用,支持多进程、异步任务、计划任务等功能。文档介绍了其安装配置、功能特性、兼容性以及使用场景,包括任务加密、结果存储、任务分组和链式任务等。用户可以通过 Django 管理命令启动集群,并根据需求配置任务队列参数。
AI总结
## Django Q 0.7.14 文档总结 ### 概述 Django Q 是一个基于 Django 的任务队列、调度和工作队列应用,使用 Python 的 multiprocessing 模块实现。它支持异步任务、计划任务、任务分组和链式任务等功能。 ### 核心特性 - **多进程工作池**:使用 multiprocessing 模块管理多个 worker 进程。 - **异步任务**:支持异步任务处理。 - **计划和重复任务**:支持 scheduled 和 repeated 任务。 - **加密和压缩**:任务数据经过加密和压缩处理。 - **结果存储**:支持将任务结果存储在数据库或缓存中。 - **结果钩子和分组**:支持任务完成后的钩子函数和任务分组。 - **Django Admin 集成**:提供 Django 管理界面。 - **多实例支持**:支持 PaaS 环境下的多实例部署。 - **多集群监控**:支持多集群监控和管理。 - **多种消息队列**:支持 Redis、Disque、IronMQ、SQS、MongoDB 和 ORM 等多种消息队列。 ### 兼容性 - **Python**:支持 Python 2.7 和 3.5。 - **Django**:兼容 Django 1.8.8 和 1.9.1。 - **依赖**: - Django - Django-picklefield(用于存储任务参数和结果) - Arrow(用于任务调度) - Blessed(用于监控界面) ### 安装 1. 使用 pip 安装: ```bash $ pip install Django-q ``` 2. 将 Django_q 添加到项目 `settings.py` 的 `INSTALLED_APPS`: ```python INSTALLED_APPS = ( # 其他应用 'django_q', ) ``` 3. 运行 Django 迁移: ```bash $ python manage.py migrate ``` ### 配置 通过 `Q_CLUSTER` 字典在 `settings.py` 中配置集群参数: ```python Q_CLUSTER = { 'name': 'myproject', 'workers': 8, 'recycle': 500, 'timeout': 60, 'compress': True, 'save_limit': 250, 'queue_limit': 500, 'cpu_affinity': 1, 'label': 'Django Q', 'redis': { 'host': '127.0.0.1', 'port': 6379, 'db': 0, }, } ``` ### 启动集群 使用 Django 的 `manage.py` 命令启动集群: ```bash $ python manage.py qcluster ``` 启动后会输出集群状态和 worker 进程信息。 ### 多集群 - 多个集群可以运行在不同的机器上,但需要满足以下条件: - 使用相同的 Broker。 - 使用相同的集群名称。 - 分享相同的 SECRET_KEY。 ### 使用示例 1. **发送邮件**: ```python from django_q.tasks import async, schedule from django.utils import timezone def welcome_mail(user): # 发送立即邮件 async('django.core.mail.send_mail', 'Welcome', 'Welcome message', 'from@example.com', [user.email]) # 安排一小时后发送后续邮件 schedule('django.core.mail.send_mail', 'Follow up', 'Tips message', 'from@example.com', [user.email], schedule_type=Schedule.ONCE, next_run=timezone.now() + timedelta(hours=1)) ``` 2. **处理信号**: ```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 handle_user_save(sender, instance, **kwargs): async('some_task', instance.id) ``` ### 注意事项 - **任务加密**:任务数据经过加密,无法解密的任务将被丢弃或标记为失败。 - **进程管理**:集群内部使用 multiprocessing 模块管理进程,支持自动回收和重启。 - **连接池**:Django Q 尽量复用 Broker 连接,避免连接耗尽。 ### 总结 Django Q 是一个功能强大的任务队列和调度工具,适用于需要异步任务处理和计划任务的 Django 项目。它支持多种消息队列、多集群部署和丰富的配置选项,能够满足大多数任务处理需求。
P1
P2
P3
P4
P5
P6
P7
下载文档到本地,方便使用
- 可预览页数已用完,剩余 66 页请下载阅读 -
文档评分
请文明评论,理性发言.