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
+24 -12
View File
@@ -206,6 +206,7 @@ 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)
try:
if response: if response:
try: try:
content = str(response.content, "utf-8") content = str(response.content, "utf-8")
@@ -213,9 +214,10 @@ class RequestUtils:
except Exception as e: except Exception as e:
logger.debug(f"处理响应内容失败: {e}") logger.debug(f"处理响应内容失败: {e}")
return None return None
finally:
response.close()
return None return None
finally:
if response is not None:
response.close()
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,6 +384,7 @@ 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)
try:
if response: if response:
try: try:
data = response.json() data = response.json()
@@ -389,9 +392,10 @@ class RequestUtils:
except Exception as e: except Exception as e:
logger.debug(f"解析JSON失败: {e}") logger.debug(f"解析JSON失败: {e}")
return None return None
finally:
response.close()
return None return None
finally:
if response is not None:
response.close()
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,6 +409,7 @@ 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)
try:
if response: if response:
try: try:
data = response.json() data = response.json()
@@ -412,9 +417,10 @@ class RequestUtils:
except Exception as e: except Exception as e:
logger.debug(f"解析JSON失败: {e}") logger.debug(f"解析JSON失败: {e}")
return None return None
finally:
response.close()
return None return None
finally:
if response is not None:
response.close()
@staticmethod @staticmethod
def parse_cache_control(header: str) -> Tuple[str, Optional[int]]: def parse_cache_control(header: str) -> Tuple[str, Optional[int]]:
@@ -711,6 +717,7 @@ 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)
try:
if response: if response:
try: try:
content = response.text content = response.text
@@ -718,9 +725,10 @@ class AsyncRequestUtils:
except Exception as e: except Exception as e:
logger.debug(f"处理异步响应内容失败: {e}") logger.debug(f"处理异步响应内容失败: {e}")
return None return None
finally:
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,6 +895,7 @@ 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)
try:
if response: if response:
try: try:
data = response.json() data = response.json()
@@ -894,9 +903,10 @@ class AsyncRequestUtils:
except Exception as e: except Exception as e:
logger.debug(f"解析异步JSON失败: {e}") logger.debug(f"解析异步JSON失败: {e}")
return None return None
finally:
await response.aclose()
return None return None
finally:
if response is not None:
await response.aclose()
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,6 +920,7 @@ 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)
try:
if response: if response:
try: try:
data = response.json() data = response.json()
@@ -917,6 +928,7 @@ class AsyncRequestUtils:
except Exception as e: except Exception as e:
logger.debug(f"解析异步JSON失败: {e}") logger.debug(f"解析异步JSON失败: {e}")
return None return None
finally:
await response.aclose()
return None return None
finally:
if response is not None:
await response.aclose()