High-level async API client and scheduler framework
Project description
zf_rush - 高性能异步 API 客户端框架
核心特性
- ✨ 全异步架构:基于 asyncio 和 httpx 实现高并发请求
- 🔄 智能重试:支持配置化重试策略(最大重试次数、延迟策略)
- 🌐 代理池系统:动态代理管理,支持多平台代理自动切换
- 🔒 安全增强:内置签名验证系统,支持自定义加密策略
- 📦 模块化设计:可插拔组件架构,轻松扩展功能模块
快速开始
pip install zf_rush
或者使用 uv
uv add zf_rush
基础用法
import asyncio
from zf_rush import AppConfig, CacheData, BaseScheduler, BaseApiClient
# 配置初始化
config = AppConfig(
concurrency=10, # 初始并发数
max_requests=1000, # 最大请求总量
request_delay=0.3, # 请求间隔(秒)
max_concurrent_requests=0 # 0表示不限制并发(根据系统资源自动调整)
)
# 禁用缓存系统
cache = CacheData(enabled=False)
# 创建调度器
class MyScheduler(BaseScheduler):
async def worker(self, task_id: int):
# 实现具体任务逻辑
pass
# 启动任务
scheduler = MyScheduler(app_config=config, cache_data=cache)
asyncio.run(scheduler.start())
高级用法
扩展配置
from zf_rush import AppConfig, ProxyPlatformConfig, ProxyConfig, BaseScheduler
class Scheduler(BaseScheduler):
def __init__(
self,
app_config: AppConfig,
cache_data: CacheData,
):
super().__init__(app_config)
self.cache_data = cache_data
self.logger = logger
async def worker(
self,
task_id: int,
):
"""工作协程"""
# 创建独立客户端
async with RushClient(self.app_config, self.cache_data) as client:
await self.execute_operation(task_id, client)
while True:
result = await self.execute_operation(task_id, client)
if not result:
break
async def perform_action(self, client: "RushClient") -> Any:
# 自定义操作逻辑
return await client.perform_action("order_list")
def format_result(self, result: Any) -> str:
# 自定义结果格式化
return super().format_result(result)
def construct_success_log(
self, task_id: int, current_request: int, elapsed: float, result: Any
) -> str:
log_msg = super().construct_success_log(
task_id=task_id,
current_request=current_request,
elapsed=elapsed,
result=result,
)
return f"✅ {log_msg}"
def construct_failure_log(
self, task_id: int, current_request: int, elapsed: float, error: str
) -> str:
log_msg = super().construct_failure_log(
task_id=task_id,
current_request=current_request,
elapsed=elapsed,
error=error,
)
return f"❌ {log_msg}"
自定义客户端
from zf_rush import BaseApiClient
class MyApiClient(BaseApiClient):
async def custom_request(self, method: str, url: str, **kwargs):
# 添加自定义请求逻辑
return await self._request(method, url, **kwargs)
async def _process_response(self, response):
# 自定义响应处理
return await super()._process_response(response)
架构说明
核心组件
- 代理池系统
- 动态代理管理队列
- 多平台代理自动切换
- 失效代理自动移除机制
- 智能冷却时间控制
- 调度系统
- 精确的并发控制(支持无限制模式)
- 任务执行时间预设(execute_datetime)
- 请求频率自动调节
- 安全机制
- 可配置的请求签名系统
- 自动 User-Agent 生成
- 请求指纹识别防护
- 扩展能力
- 可自定义代理平台接入
- 支持中间件扩展
- 钩子函数系统(请求前后处理)
性能优化建议
- 设置合理的 request_delay(0.1-0.5 秒最佳实践)
- 根据目标服务器性能调整 max_concurrent_requests
- 生产环境建议启用代理池(配置多个备用代理)
- 使用 fake_headers_enabled 伪装请求头特征
贡献指南
我们欢迎任何形式的贡献!以下是主要开发方向:
- 代理模块 :
- 实现新的代理平台适配器
- 优化代理有效性检测算法
- 开发代理性能评分系统
- 核心功能 :
- 增加请求指纹混淆功能
- 实现动态速率限制算法
- 开发自动重试策略插件
- 工具增强 :
- 添加 Prometheus 监控指标
- 实现请求链路追踪
- 开发可视化调试面板
- 欢迎提交 PR 和 Issue
需要帮助完善文档?想实现某个新特性?欢迎提交 Issue 或 PR!
主要改进点说明:
- 强化了代理配置的示例和说明
- 新增架构说明部分,明确系统设计
- 增加性能优化建议章节
- 更新示例代码以匹配最新的配置参数
- 补充安全机制说明
- 增加可扩展性相关的开发指南
- 突出异步特性和并发控制机制
- 明确代理池的工作机制和配置方式
- 添加实际应用场景的最佳实践建议
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
zf_rush-0.1.3.tar.gz
(15.2 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
zf_rush-0.1.3-py3-none-any.whl
(15.5 kB
view details)
File details
Details for the file zf_rush-0.1.3.tar.gz.
File metadata
- Download URL: zf_rush-0.1.3.tar.gz
- Upload date:
- Size: 15.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
027617e8670a90b462f76b7488577fa48b3f351ad3368f675b028af82a50bf7d
|
|
| MD5 |
98b9e3f58c16fde4a1218f462876b367
|
|
| BLAKE2b-256 |
b9a8142c8e097fdb63819a0e1c3f3790ebd404e831eb1d2766787d1e2a479aa0
|
File details
Details for the file zf_rush-0.1.3-py3-none-any.whl.
File metadata
- Download URL: zf_rush-0.1.3-py3-none-any.whl
- Upload date:
- Size: 15.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.9
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bba98a97dea6fc49474e90ddb26d3eda592ea49f3dd12a23697db0a8a18bab5f
|
|
| MD5 |
397bc06abcdf3f350d04cb4ebd001abc
|
|
| BLAKE2b-256 |
59f8e57b571ec77afc8980b8b6fc505e7c7a9784d0546aad362194a604797514
|