From 1d4e643fc714b8a7357d77dbb8580d5deae1c3dc Mon Sep 17 00:00:00 2001 From: liubiren Date: Mon, 17 Nov 2025 14:33:22 +0800 Subject: [PATCH] =?UTF-8?q?251117=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- utils/client.py | 18 ++++-------------- 1 file changed, 4 insertions(+), 14 deletions(-) diff --git a/utils/client.py b/utils/client.py index 4e87804..b10b1ff 100644 --- a/utils/client.py +++ b/utils/client.py @@ -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() # 响应状态码