Skip to main content

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)

架构说明

核心组件

  1. 代理池系统
  • 动态代理管理队列
  • 多平台代理自动切换
  • 失效代理自动移除机制
  • 智能冷却时间控制
  1. 调度系统
  • 精确的并发控制(支持无限制模式)
  • 任务执行时间预设(execute_datetime)
  • 请求频率自动调节
  1. 安全机制
  • 可配置的请求签名系统
  • 自动 User-Agent 生成
  • 请求指纹识别防护
  1. 扩展能力
  • 可自定义代理平台接入
  • 支持中间件扩展
  • 钩子函数系统(请求前后处理)

性能优化建议

  • 设置合理的 request_delay(0.1-0.5 秒最佳实践)
  • 根据目标服务器性能调整 max_concurrent_requests
  • 生产环境建议启用代理池(配置多个备用代理)
  • 使用 fake_headers_enabled 伪装请求头特征

贡献指南

我们欢迎任何形式的贡献!以下是主要开发方向:

  1. 代理模块
  • 实现新的代理平台适配器
  • 优化代理有效性检测算法
  • 开发代理性能评分系统
  1. 核心功能
  • 增加请求指纹混淆功能
  • 实现动态速率限制算法
  • 开发自动重试策略插件
  1. 工具增强
  • 添加 Prometheus 监控指标
  • 实现请求链路追踪
  • 开发可视化调试面板
  • 欢迎提交 PR 和 Issue

需要帮助完善文档?想实现某个新特性?欢迎提交 Issue 或 PR!

主要改进点说明:

  1. 强化了代理配置的示例和说明
  2. 新增架构说明部分,明确系统设计
  3. 增加性能优化建议章节
  4. 更新示例代码以匹配最新的配置参数
  5. 补充安全机制说明
  6. 增加可扩展性相关的开发指南
  7. 突出异步特性和并发控制机制
  8. 明确代理池的工作机制和配置方式
  9. 添加实际应用场景的最佳实践建议

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)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

zf_rush-0.1.3-py3-none-any.whl (15.5 kB view details)

Uploaded Python 3

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

Hashes for zf_rush-0.1.3.tar.gz
Algorithm Hash digest
SHA256 027617e8670a90b462f76b7488577fa48b3f351ad3368f675b028af82a50bf7d
MD5 98b9e3f58c16fde4a1218f462876b367
BLAKE2b-256 b9a8142c8e097fdb63819a0e1c3f3790ebd404e831eb1d2766787d1e2a479aa0

See more details on using hashes here.

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

Hashes for zf_rush-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 bba98a97dea6fc49474e90ddb26d3eda592ea49f3dd12a23697db0a8a18bab5f
MD5 397bc06abcdf3f350d04cb4ebd001abc
BLAKE2b-256 59f8e57b571ec77afc8980b8b6fc505e7c7a9784d0546aad362194a604797514

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page