我正在将asyncio与websockets和aiohttp一起用于Twitch API机器人。一切都很好,但是在某个时候asyncio
开始隐藏错误并使代码变砖。
经过一段时间的处理,我意识到只有在asyncio.gather()
上等待的函数(和嵌套函数)上才会发生。
如果您在图像中看到,我尝试打印一个未解决的参考,这时线程已死并且没有引发错误。
https://cdn.discordapp.com/attachments/532653651689472024/570191503587147776/Screenshot_2.png
此外,根据类型错误,异步代码(asyncio/events.py
)的这一部分是否很奇怪,异步在这部分上循环了很多次。我不知道这是否重要。
https://cdn.discordapp.com/attachments/532653651689472024/570191514634944522/Screenshot_4.png
此外,我尝试使用pycharm和asyncio
卸载pip
。代码仍在访问asyncio
,我不知道在哪里。我没有设置虚拟环境。有什么方法可以手动卸载并尝试干净地重新安装asyncio
?
顺便说一句,我的应用程序仍然可以正常工作,只是当我错过某些东西时就没有任何线索,这使得进度非常困难
答案 0 :(得分:0)
如果您在图像中看到,我会尝试打印一个未解决的参考 指出线程已死,并且不会引发任何错误。
asyncio.gather
同时运行多个任务,并且by default传播所有提出的任务的第一个异常。即使此异常未完成您的程序,它也至少改变了解释器的位置。而且,尽管其他收集的任务继续在后台运行,但是从您的解释器当前所在的新位置不能提出其例外。
在任务中发生异常,但未在are printed处引发异常,因为在关闭事件循环时(通常在程序的最后)警告“从未检索到任务异常”。
由于您未提供minimal reproducible example,因此很难说这是否正是您的情况。随时提供一个以获取更准确的答案。
此外,我尝试使用pycharm和pip卸载asyncio。 代码仍然访问异步我不知道在哪里。我没有 虚拟环境设置。有什么方法可以手动卸载并 尝试干净地重新安装asyncio?
asyncio
是Python standard library的一部分。如果没有(重新/取消)安装Python解释器本身,则无法(或至少不应)(重新/取消)安装此模块。