Skip to content

feat: [GLM模型]#101

Open
GwjJyo wants to merge 1 commit intoSnowfall-in-June:mainfrom
GwjJyo:glm-test
Open

feat: [GLM模型]#101
GwjJyo wants to merge 1 commit intoSnowfall-in-June:mainfrom
GwjJyo:glm-test

Conversation

@GwjJyo
Copy link
Copy Markdown

@GwjJyo GwjJyo commented Mar 13, 2026

创建 RateLimiter 频率限制器类
修改 SunRequests 类集成频率限制
更新 init.py 导出 RateLimiter

实现方案

1. 新建 rate_limiter.py

创建了 RateLimiter 类,采用 滑动窗口算法 实现频率限制:

核心特性:

  • 单例模式 :全局共享一个实例,确保所有限制统一管理
  • 线程安全 :使用 threading.Lock 保证多线程环境下的安全性
  • 按域名隔离 :不同域名独立计数,互不影响
  • 默认配置 :每分钟 30 次请求

2. 修改 sunrequests.py

在 SunRequests.request 方法中仅添加一行代码:

rate_limiter.acquire(url)

3. 更新 init.py

导出 rate_limiter 实例和 RateLimiter 类。

使用方式

from adata.common.utils import rate_limiter

设置默认频率(所有域名,默认30次/分钟)

rate_limiter.set_default_rate(60)

设置特定域名的频率限制

rate_limiter.set_rate('data.eastmoney.com', 100)
rate_limiter.set_rate('q.10jqka.com.cn', 20)

查看某个域名的频率限制

rate = rate_limiter.get_rate('data.eastmoney.com')

清除历史记录(可选)

rate_limiter.clear_history() # 清除所有
rate_limiter.clear_history('data.eastmoney.com') # 清除特定域名

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant