mirror of
https://github.com/zhenxun-org/zhenxun_bot.git
synced 2025-12-15 14:22:55 +08:00
🐞 fix(http_utils): 修复一些下载问题
This commit is contained in:
parent
c4f98e3505
commit
780e4f67ad
@ -252,11 +252,10 @@ class ShopManage:
|
|||||||
)
|
)
|
||||||
for _id, success in enumerate(result):
|
for _id, success in enumerate(result):
|
||||||
if not success:
|
if not success:
|
||||||
break
|
raise Exception("插件依赖文件下载失败")
|
||||||
else:
|
else:
|
||||||
logger.debug(f"插件依赖文件列表: {req_paths}", "插件管理")
|
logger.debug(f"插件依赖文件列表: {req_paths}", "插件管理")
|
||||||
install_requirement(plugin_path)
|
install_requirement(plugin_path)
|
||||||
raise Exception("插件依赖文件下载失败")
|
|
||||||
return True
|
return True
|
||||||
raise Exception("插件下载失败")
|
raise Exception("插件下载失败")
|
||||||
|
|
||||||
|
|||||||
@ -11,9 +11,9 @@ import httpx
|
|||||||
import aiofiles
|
import aiofiles
|
||||||
from retrying import retry
|
from retrying import retry
|
||||||
from playwright.async_api import Page
|
from playwright.async_api import Page
|
||||||
from httpx import Response, ConnectTimeout
|
|
||||||
from nonebot_plugin_alconna import UniMessage
|
from nonebot_plugin_alconna import UniMessage
|
||||||
from nonebot_plugin_htmlrender import get_browser
|
from nonebot_plugin_htmlrender import get_browser
|
||||||
|
from httpx import Response, ConnectTimeout, HTTPStatusError
|
||||||
|
|
||||||
from zhenxun.services.log import logger
|
from zhenxun.services.log import logger
|
||||||
from zhenxun.configs.config import BotConfig
|
from zhenxun.configs.config import BotConfig
|
||||||
@ -205,10 +205,13 @@ class AsyncHttpx:
|
|||||||
path.parent.mkdir(parents=True, exist_ok=True)
|
path.parent.mkdir(parents=True, exist_ok=True)
|
||||||
try:
|
try:
|
||||||
for _ in range(3):
|
for _ in range(3):
|
||||||
|
if not isinstance(url, list):
|
||||||
|
url = [url]
|
||||||
|
for u in url:
|
||||||
if not stream:
|
if not stream:
|
||||||
try:
|
try:
|
||||||
response = await cls.get(
|
response = await cls.get(
|
||||||
url,
|
u,
|
||||||
params=params,
|
params=params,
|
||||||
headers=headers,
|
headers=headers,
|
||||||
cookies=cookies,
|
cookies=cookies,
|
||||||
@ -222,17 +225,16 @@ class AsyncHttpx:
|
|||||||
content = response.content
|
content = response.content
|
||||||
async with aiofiles.open(path, "wb") as wf:
|
async with aiofiles.open(path, "wb") as wf:
|
||||||
await wf.write(content)
|
await wf.write(content)
|
||||||
logger.info(f"下载 {url} 成功.. Path:{path.absolute()}")
|
logger.info(
|
||||||
|
f"下载 {url} 成功.. Path:{path.absolute()}"
|
||||||
|
)
|
||||||
return True
|
return True
|
||||||
except (TimeoutError, ConnectTimeout):
|
except (TimeoutError, ConnectTimeout, HTTPStatusError):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
if not headers:
|
if not headers:
|
||||||
headers = get_user_agent()
|
headers = get_user_agent()
|
||||||
_proxy = proxy if proxy else cls.proxy if use_proxy else None
|
_proxy = proxy if proxy else cls.proxy if use_proxy else None
|
||||||
if not isinstance(url, list):
|
|
||||||
url = [url]
|
|
||||||
for u in url:
|
|
||||||
try:
|
try:
|
||||||
async with httpx.AsyncClient(
|
async with httpx.AsyncClient(
|
||||||
proxies=_proxy, # type: ignore
|
proxies=_proxy, # type: ignore
|
||||||
@ -277,7 +279,7 @@ class AsyncHttpx:
|
|||||||
f"Path:{path.absolute()}"
|
f"Path:{path.absolute()}"
|
||||||
)
|
)
|
||||||
return True
|
return True
|
||||||
except (TimeoutError, ConnectTimeout):
|
except (TimeoutError, ConnectTimeout, HTTPStatusError):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
logger.error(f"下载 {url} 下载超时.. Path:{path.absolute()}")
|
logger.error(f"下载 {url} 下载超时.. Path:{path.absolute()}")
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user