QAResourceManager - QUANTAXIS统一资源管理器

版本: QUANTAXIS 2.1.0+ 作者: @yutiansut @quantaxis 日期: 2025


📋 概述

QAResourceManager是QUANTAXIS 2.1.0新增的统一资源管理器,提供对MongoDB、RabbitMQ、ClickHouse、Redis等外部资源的统一管理和优雅关闭机制。

核心特性

连接池管理 - 自动复用连接,减少开销 ✅ 上下文管理器 - 支持with语句,自动释放资源 ✅ 优雅关闭 - 确保资源正确释放,无泄漏 ✅ 自动重连 - 连接断开时自动重试 ✅ 健康检查 - 定期检查连接状态 ✅ 线程安全 - 支持多线程环境 ✅ 单例模式 - 全局资源池管理 ✅ atexit清理 - 程序退出时自动关闭资源


🚀 快速开始

安装依赖

# 基础依赖 (MongoDB)
pip install pymongo motor

# RabbitMQ
pip install pika

# ClickHouse
pip install clickhouse-driver

# Redis
pip install redis

# 完整安装
pip install quantaxis[full]

最简示例


📚 详细文档

1. MongoDB资源管理器

1.1 基本用法

1.2 配置参数

1.3 异步模式

1.4 连接池配置

QAMongoResourceManager默认配置:

  • maxPoolSize: 100 (最大连接数)

  • minPoolSize: 10 (最小连接数)

  • maxIdleTimeMS: 60000 (60秒, 连接最大空闲时间)

  • waitQueueTimeoutMS: 5000 (5秒, 等待连接池超时)

2. RabbitMQ资源管理器

2.1 基本用法

2.2 配置参数

2.3 安全特性

  • 密码擦除: 认证后自动清除内存中的密码 (erase_on_connect=True)

  • 心跳保持: 默认600秒心跳,防止连接超时

  • 优雅关闭: 先关闭通道,再关闭连接

3. ClickHouse资源管理器

3.1 基本用法

3.2 配置参数

3.3 性能优化配置

4. Redis资源管理器

4.1 基本用法

4.2 配置参数

4.3 管道操作

4.4 健康检查

5. 统一资源池管理器

5.1 基本用法(推荐)

5.2 单例模式

QAResourcePool采用单例模式,全局唯一:

5.3 自动清理

5.4 单独关闭资源

6. 便捷函数

6.1 快捷上下文管理器


🔧 高级用法

1. 自定义连接配置

MongoDB自定义URI

RabbitMQ认证

2. 连接重试

所有资源管理器均支持reconnect()方法:

3. 健康检查

4. 线程安全

所有资源管理器使用threading.RLock确保线程安全:


💡 最佳实践

1. 使用with语句

推荐:

不推荐:

2. 使用资源池管理全局资源

推荐 (长期运行的应用):

不推荐 (频繁创建销毁):

3. 异常处理

推荐:

4. 配置外部化

推荐:

5. 日志监控


📊 性能优化

MongoDB连接池调优

RabbitMQ心跳调优

ClickHouse查询优化

Redis连接池调优


🐛 故障排查

问题1: ImportError

解决:

问题2: 连接超时

解决:

问题3: 资源泄漏

症状: 程序运行一段时间后,数据库连接数不断增加

解决:

问题4: RabbitMQ连接断开

症状: pika.exceptions.StreamLostError

解决:


📖 示例代码

完整示例请参考:

  • examples/resource_manager_example.py - 9个完整示例

  • QUANTAXIS/QAUtil/QAResourceManager.py - 源码和内联文档


🔗 相关文档


🤝 贡献

如果发现问题或有改进建议,欢迎:

  • 提交Issue: https://github.com/QUANTAXIS/QUANTAXIS/issues

  • 提交PR: https://github.com/QUANTAXIS/QUANTAXIS/pulls


📝 更新日志

v2.1.0 (2025-01-25)

  • ✨ 新增QAResourceManager统一资源管理器

  • ✨ 新增MongoDB/RabbitMQ/ClickHouse/Redis管理器

  • ✨ 新增QAResourcePool单例资源池

  • ✨ 新增便捷上下文管理器函数

  • ✨ 新增自动atexit清理机制

  • ✨ 新增健康检查功能

  • ✨ 新增线程安全支持


👥 作者

@yutiansut @quantaxis

📄 许可证

MIT License

Copyright (c) 2016-2025 yutiansut/QUANTAXIS

Last updated

Was this helpful?