251117更新

This commit is contained in:
liubiren 2025-11-17 14:33:22 +08:00
parent 73c3a06dea
commit 1d4e643fc7
1 changed files with 4 additions and 14 deletions

View File

@ -89,10 +89,10 @@ class MySQLClient:
"""
封装urllib.request的相关操作实现常用HTTPREQUEST
封装urllib.request的相关操作
使用方法
client = HTTPClient()
response = clinet.post(url)
response = client.post(url)
"""
@ -140,32 +140,22 @@ class TokenBucket:
def restrict(refill_rate=5, max_tokens=5):
def decorator(func):
# 初始化令牌桶
token_bucket = TokenBucket(refill_rate=refill_rate, max_tokens=max_tokens)
@wraps(func)
def wrapper(*args, **kwargs):
# 重试次数
retries = 0
# 若重试数小于等于最大重试次数,则循环检查是否允许请求
while retries <= 10:
success, wait_time = token_bucket.acquire()
# 若允许请求则返回嵌套函数,若不允许请求则等待
if success:
return func(*args, **kwargs)
time.sleep(wait_time * 1.5**retries)
retries += 1
raise Exception("request too frequently")
return wrapper
return decorator
@ -423,7 +413,7 @@ class HTTPClient:
# 请求参数模型
arguments = arguments.model_dump(exclude_none=True, by_alias=True)
# URL由HTTPURL对象转为字符串
# URL转为字符串
arguments["url"] = str(arguments["url"])
# 重构表单数据
@ -493,7 +483,7 @@ class HTTPClient:
except Exception as exception:
# 尝试根据响应解析响应状态码和错误信息,否则进行构造
try:
# JOSN反序列化
# JSON反序列化
# noinspection PyUnboundLocalVariable
response_decoded = response.json()
# 响应状态码