From ee9a2a6cb0bab84d93ff2a824d6ce3b4265861d0 Mon Sep 17 00:00:00 2001 From: molanp <104612722+molanp@users.noreply.github.com> Date: Tue, 17 Jun 2025 03:58:10 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=9A=91=20=E4=BF=AE=E5=A4=8D=20httpx=20?= =?UTF-8?q?=E5=88=9D=E5=A7=8B=E5=8C=96=E4=BC=A0=E5=8F=82=E9=94=99=E8=AF=AF?= =?UTF-8?q?=20(#1926)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- zhenxun/utils/http_utils.py | 39 ++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/zhenxun/utils/http_utils.py b/zhenxun/utils/http_utils.py index 6131d5b0..b41cc331 100644 --- a/zhenxun/utils/http_utils.py +++ b/zhenxun/utils/http_utils.py @@ -25,6 +25,8 @@ from zhenxun.services.log import logger from zhenxun.utils.message import MessageUtils from zhenxun.utils.user_agent import get_user_agent +CLIENT_KEY = ["use_proxy", "proxy", "verify", "headers"] + def get_async_client( proxies: dict[str, str] | None = None, verify: bool = False, **kwargs @@ -117,14 +119,11 @@ class AsyncHttpx: for current_url in urls: try: logger.info(f"开始获取 {current_url}..") - async with cls._create_client(**kwargs) as client: - # 从 kwargs 中提取仅 client.get 支持的参数 - get_kwargs = { - k: v - for k, v in kwargs.items() - if k not in ["use_proxy", "proxy", "verify", "headers"] - } - response = await client.get(current_url, **get_kwargs) + client_kwargs = {k: v for k, v in kwargs.items() if k in CLIENT_KEY} + for key in CLIENT_KEY: + kwargs.pop(key, None) + async with cls._create_client(**client_kwargs) as client: + response = await client.get(current_url, **kwargs) if check_status_code and response.status_code != check_status_code: raise HTTPStatusError( @@ -155,13 +154,11 @@ class AsyncHttpx: 返回: Response: Response """ - async with cls._create_client(**kwargs) as client: - head_kwargs = { - k: v - for k, v in kwargs.items() - if k not in ["use_proxy", "proxy", "verify"] - } - return await client.head(url, **head_kwargs) + client_kwargs = {k: v for k, v in kwargs.items() if k in CLIENT_KEY} + for key in CLIENT_KEY: + kwargs.pop(key, None) + async with cls._create_client(**client_kwargs) as client: + return await client.head(url, **kwargs) @classmethod async def post(cls, url: str, **kwargs) -> Response: @@ -178,13 +175,11 @@ class AsyncHttpx: 返回: Response: Response。 """ - async with cls._create_client(**kwargs) as client: - post_kwargs = { - k: v - for k, v in kwargs.items() - if k not in ["use_proxy", "proxy", "verify"] - } - return await client.post(url, **post_kwargs) + client_kwargs = {k: v for k, v in kwargs.items() if k in CLIENT_KEY} + for key in CLIENT_KEY: + kwargs.pop(key, None) + async with cls._create_client(**client_kwargs) as client: + return await client.post(url, **kwargs) @classmethod async def get_content(cls, url: str, **kwargs) -> bytes: