bilibili-api icon indicating copy to clipboard operation
bilibili-api copied to clipboard

【漏洞】正常运行但是在结束时会报错

Open TomoeMami opened this issue 3 years ago • 4 comments

Python 版本: 3.10.1(服务器上是3.8)

模块版本: 9.1.0

运行环境: Linux

模块路径: bilibili_api.user

报错信息:

Exception ignored in atexit callback: <function __clean at 0x7f6556dec550>
Traceback (most recent call last):
  File "/home/riko/.local/lib/python3.10/site-packages/bilibili_api/utils/network.py", line 26, in __clean
    loop = asyncio.get_event_loop()
  File "/usr/lib/python3.10/asyncio/events.py", line 656, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'MainThread'.
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x7f6556e09c00>

报错代码:

idlist= ['672342685']
async def get_bili(uid,dynamics):
    data=[]
    u = user.User(int(uid))
    offset = 0
    page = await u.get_dynamics(offset)

async def main():
    tasks = []
    dynamics = {}
    for uid in idlist:
        tasks.append(get_bili(uid,dynamics))
    await asyncio.gather(*tasks)

if __name__ == '__main__':
    asyncio.run(main())
    exit()

在服务器和本地测试均出现相同问题,虽然代码能正常运行但是在结束的时候会弹出这个报错信息。退回bilibili-api版本到9.0.1不再复现。

TomoeMami avatar Dec 16 '21 12:12 TomoeMami

我也遇到此問題,改成下列程式即可

loop = asyncio.new_event_loop()
loop.run_until_complete(main())

gitqwerty777 avatar Jan 07 '22 06:01 gitqwerty777

我也遇到此問題,改成下列程式即可

loop = asyncio.new_event_loop()
loop.run_until_complete(main())

我也有这个问题 这样是没问题的 但asyncio官方文章中建议应用开发者不使用asyncio.new_event_loop()这种低层级api 应该是程序退出时清理aiohttp实例的时候主循环已经退出了

K-bai avatar Jan 09 '22 04:01 K-bai

这个问题暂时不太好解决,如果代码能正常运行忽略即可

MoyuScript avatar Jan 09 '22 12:01 MoyuScript

我也遇到此問題,改成下列程式即可

loop = asyncio.new_event_loop()
loop.run_until_complete(main())
Error in atexit._run_exitfuncs:
Traceback (most recent call last):
  File "/home/ubuntu/.local/lib/python3.8/site-packages/bilibili_api/utils/network.py", line 26, in __clean
    loop = asyncio.get_event_loop()
  File "/usr/lib/python3.8/asyncio/events.py", line 639, in get_event_loop
    raise RuntimeError('There is no current event loop in thread %r.'
RuntimeError: There is no current event loop in thread 'MainThread'.

TomoeMami avatar Jan 12 '22 12:01 TomoeMami