fix(http): close helper responses consistently

This commit is contained in:
InfinityPacer
2026-04-10 18:21:30 +08:00
committed by jxxghp
parent df3294c9d2
commit 815d83bfb3
+67 -55
View File
@@ -206,16 +206,18 @@ class RequestUtils:
:return: 响应的内容,若发生RequestException则返回None :return: 响应的内容,若发生RequestException则返回None
""" """
response = self.request(method="get", url=url, params=params, **kwargs) response = self.request(method="get", url=url, params=params, **kwargs)
if response: try:
try: if response:
content = str(response.content, "utf-8") try:
return content content = str(response.content, "utf-8")
except Exception as e: return content
logger.debug(f"处理响应内容失败: {e}") except Exception as e:
return None logger.debug(f"处理响应内容失败: {e}")
finally: return None
return None
finally:
if response is not None:
response.close() response.close()
return None
def post(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[Response]: def post(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[Response]:
""" """
@@ -382,16 +384,18 @@ class RequestUtils:
:return: JSON数据,若发生异常则返回None :return: JSON数据,若发生异常则返回None
""" """
response = self.request(method="get", url=url, params=params, **kwargs) response = self.request(method="get", url=url, params=params, **kwargs)
if response: try:
try: if response:
data = response.json() try:
return data data = response.json()
except Exception as e: return data
logger.debug(f"解析JSON失败: {e}") except Exception as e:
return None logger.debug(f"解析JSON失败: {e}")
finally: return None
return None
finally:
if response is not None:
response.close() response.close()
return None
def post_json(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[dict]: def post_json(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[dict]:
""" """
@@ -405,16 +409,18 @@ class RequestUtils:
if json is None: if json is None:
json = {} json = {}
response = self.request(method="post", url=url, data=data, json=json, **kwargs) response = self.request(method="post", url=url, data=data, json=json, **kwargs)
if response: try:
try: if response:
data = response.json() try:
return data data = response.json()
except Exception as e: return data
logger.debug(f"解析JSON失败: {e}") except Exception as e:
return None logger.debug(f"解析JSON失败: {e}")
finally: return None
return None
finally:
if response is not None:
response.close() response.close()
return None
@staticmethod @staticmethod
def parse_cache_control(header: str) -> Tuple[str, Optional[int]]: def parse_cache_control(header: str) -> Tuple[str, Optional[int]]:
@@ -711,16 +717,18 @@ class AsyncRequestUtils:
:return: 响应的内容,若发生RequestError则返回None :return: 响应的内容,若发生RequestError则返回None
""" """
response = await self.request(method="get", url=url, params=params, **kwargs) response = await self.request(method="get", url=url, params=params, **kwargs)
if response: try:
try: if response:
content = response.text try:
return content content = response.text
except Exception as e: return content
logger.debug(f"处理异步响应内容失败: {e}") except Exception as e:
return None logger.debug(f"处理异步响应内容失败: {e}")
finally: return None
await response.aclose() # 确保连接被关闭 return None
return None finally:
if response is not None:
await response.aclose()
async def post(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[httpx.Response]: async def post(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[httpx.Response]:
""" """
@@ -887,16 +895,18 @@ class AsyncRequestUtils:
:return: JSON数据,若发生异常则返回None :return: JSON数据,若发生异常则返回None
""" """
response = await self.request(method="get", url=url, params=params, **kwargs) response = await self.request(method="get", url=url, params=params, **kwargs)
if response: try:
try: if response:
data = response.json() try:
return data data = response.json()
except Exception as e: return data
logger.debug(f"解析异步JSON失败: {e}") except Exception as e:
return None logger.debug(f"解析异步JSON失败: {e}")
finally: return None
return None
finally:
if response is not None:
await response.aclose() await response.aclose()
return None
async def post_json(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[dict]: async def post_json(self, url: str, data: Any = None, json: dict = None, **kwargs) -> Optional[dict]:
""" """
@@ -910,13 +920,15 @@ class AsyncRequestUtils:
if json is None: if json is None:
json = {} json = {}
response = await self.request(method="post", url=url, data=data, json=json, **kwargs) response = await self.request(method="post", url=url, data=data, json=json, **kwargs)
if response: try:
try: if response:
data = response.json() try:
return data data = response.json()
except Exception as e: return data
logger.debug(f"解析异步JSON失败: {e}") except Exception as e:
return None logger.debug(f"解析异步JSON失败: {e}")
finally: return None
return None
finally:
if response is not None:
await response.aclose() await response.aclose()
return None