Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Windows下修改事件循环会导致其他第三方库(如:nonebot)报错 #669

Open
MerlinCN opened this issue Feb 2, 2024 · 1 comment
Labels
environment 依赖/环境相关

Comments

@MerlinCN
Copy link

MerlinCN commented Feb 2, 2024

环境:python3.11
bilibili_api.__init__.py

BILIBILI_API_VERSION = "16.1.1"

# 如果系统为 Windows,则修改默认策略,以解决代理报错问题
if "windows" in platform.system().lower():
    asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())  # type: ignore

此处代码会导致一些默认使用WindowsProactorEventLoopPolicy的第三方库报错,如:nonebot_make_subprocess_transport继承自WindowsProactorEventLoopPolicy

@Nemo2011
Copy link
Owner

Nemo2011 commented Feb 2, 2024

先贴一个链接,有关你出现的问题:https://github.com/orgs/nonebot/discussions/13当然如果你找到了当我没说

如果你按照那里的这么去做,其实无非只有一个影响:不能用 aiohttp 的代理。但是 这个模块也是支持 httpx 的,所以如果真的需要代理,你可以考虑使用 httpx 进行请求。

但是现在 httpx 又有一个问题:不支持 websocket,因此 LiveDanmakuVideoOnlineMonitor 还是得用回 aiohttp,这个时候你又不能用代理了。

所以……建议自行进行权衡。

最后贴张表:当你按照开头给的链接对这个问题进行处理后,模块对不同功能的支持情况:

无代理/有代理 aiohttp httpx
VideoOnlineMonitor (旧接口,模块内有新接口) & LiveDanmaku ✅ / ❌ ❌ / ❌ (httpx 本身便不支持 WebSocket)
login.py ❌ / ❌ (这部分本身便不支持异步) ✅ / ✅
其他接口 ✅ / ❌ ✅ / ✅

@z0z0r4 z0z0r4 added the environment 依赖/环境相关 label Feb 6, 2024
@z0z0r4 z0z0r4 pinned this issue Mar 15, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
environment 依赖/环境相关
Projects
None yet
Development

No branches or pull requests

3 participants