RuntimeError:事件循环在异步python中关闭

python_user

我正在尝试使用asyncpraw库,但得到了RuntimeError: Event loop is closed

这是我的代码和回溯。

代码

import asyncio
import asyncpraw

async def main():
    reddit = asyncpraw.Reddit('praw_ini_name')
    print('User is', await reddit.user.me())
    await reddit.close()

asyncio.run(main())

追溯

User is python_user
Exception ignored in: <function _ProactorBasePipeTransport.__del__ at 0x0000021D2898C1F0>
Traceback (most recent call last):
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 116, in __del__
    self.close()
  File "C:\Program Files\Python39\lib\asyncio\proactor_events.py", line 108, in close
    self._loop.call_soon(self._call_connection_lost, None)
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 746, in call_soon
    self._check_closed()
  File "C:\Program Files\Python39\lib\asyncio\base_events.py", line 510, in _check_closed
    raise RuntimeError('Event loop is closed')
RuntimeError: Event loop is closed

但是,如果我像这样启动事件循环,则不会发生(无例外)

import asyncio
import asyncpraw

async def main():
    reddit = asyncpraw.Reddit('praw_ini_name')
    print('User is', await reddit.user.me())
    await reddit.close()

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

我假设在较新的python版本中,启动事件循环的首选方法是我在第一个代码段中所示的方法,那么为什么这不起作用?即使输出输出,为什么我的代码也会引发异常?

我使用的是Python 3.9.2和asyncpraw7.2.0。

我已经看到Asyncio事件循环已关闭Python3.x RuntimeError:事件循环已关闭,Aiohttp,Asyncio:RuntimeError:事件循环已关闭,我相信它们不是伪造的。我的问题问为什么它只能与另一只一起使用。

如果我不使用,reddit.close()则会得到以下信息

User is python_user
Unclosed client session
client_session: <aiohttp.client.ClientSession object at 0x0000025BAAAEF8B0>
Unclosed connector
connections: ['[(<aiohttp.client_proto.ResponseHandler object at 0x0000025BAAAF1640>, 174448.968)]']
connector: <aiohttp.connector.TCPConnector object at 0x0000025BAAAEFA90>

谢谢你。

宫城先生

asyncio.run 显式关闭完成时的循环。

asyncio.run(coro,*,debug = False)

[...]
此函数始终创建一个新的事件循环,并在最后将其关闭。

这意味着一旦完成,事件循环将不可用于清理main相反,必须通过异步生成器或同步地确定性地进行清理

当手动管理循环而不调用时loop.close(),循环仍可用于安排清理回调。请注意,除非明确恢复循环,否则这并不一定意味着实际上会执行清除操作


具体来说,该问题是aiohttp 3.x的一个已知问题

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

RuntimeError:事件循环在异步python中关闭

来自分类Dev

RuntimeError:连接python discord bot时事件循环关闭

来自分类Dev

Python Asyncio错误:“ OSError:[WinError 6]句柄无效”和“ RuntimeError:事件循环已关闭”

来自分类Dev

在Python中关闭asyncio事件循环最终导致异常

来自分类Dev

python中异步循环内的异步循环

来自分类Dev

Python Discord Bot'事件循环已关闭'

来自分类Dev

Python RuntimeError:此事件循环已在运行

来自分类Dev

Python 3 中的异步 for 循环

来自分类Dev

使用 pytest-asyncio 测试通道 2.0 获取 RuntimeError:事件循环已关闭

来自分类Dev

监视异步事件循环

来自分类Dev

在python 3.8中使用aiohttp和asyncio关闭异常事件循环

来自分类Dev

代理对异步关闭事件的响应

来自分类Dev

多次实例化时,异步锁中的事件循环错误

来自分类Dev

带有python asyncio的AWS Lambda。事件循环关闭问题?

来自分类Dev

循环python中的异步API调用

来自分类Dev

pytest:runtimeerror线程'mainthread'中没有当前事件循环

来自分类Dev

WebForms事件中的异步

来自分类Dev

事件中的异步功能

来自分类Dev

Javascript中的异步循环

来自分类Dev

在 for 循环 nodejs 中异步

来自分类Dev

在异步任务中关闭MemoryStream

来自分类Dev

.map异步回调和事件循环

来自分类Dev

循环-带有异步事件

来自分类Dev

Flask asyncio aiohttp-RuntimeError:线程“ Thread-2”中没有当前事件循环

来自分类Dev

尝试设置ipdb.set_trace():RuntimeError:线程'Thread -....'中没有当前事件循环。

来自分类Dev

没有 asyncio 的 Python 3.6 异步等待:如何编写自己最简单的事件循环?

来自分类Dev

NodeJS中的文件操作是否利用OS异步(轮询?)还是阻塞事件循环?

来自分类Dev

RuntimeError:事件循环在将来完成之前已停止

来自分类Dev

Angular中的异步事件麻烦

Related 相关文章

  1. 1

    RuntimeError:事件循环在异步python中关闭

  2. 2

    RuntimeError:连接python discord bot时事件循环关闭

  3. 3

    Python Asyncio错误:“ OSError:[WinError 6]句柄无效”和“ RuntimeError:事件循环已关闭”

  4. 4

    在Python中关闭asyncio事件循环最终导致异常

  5. 5

    python中异步循环内的异步循环

  6. 6

    Python Discord Bot'事件循环已关闭'

  7. 7

    Python RuntimeError:此事件循环已在运行

  8. 8

    Python 3 中的异步 for 循环

  9. 9

    使用 pytest-asyncio 测试通道 2.0 获取 RuntimeError:事件循环已关闭

  10. 10

    监视异步事件循环

  11. 11

    在python 3.8中使用aiohttp和asyncio关闭异常事件循环

  12. 12

    代理对异步关闭事件的响应

  13. 13

    多次实例化时,异步锁中的事件循环错误

  14. 14

    带有python asyncio的AWS Lambda。事件循环关闭问题?

  15. 15

    循环python中的异步API调用

  16. 16

    pytest:runtimeerror线程'mainthread'中没有当前事件循环

  17. 17

    WebForms事件中的异步

  18. 18

    事件中的异步功能

  19. 19

    Javascript中的异步循环

  20. 20

    在 for 循环 nodejs 中异步

  21. 21

    在异步任务中关闭MemoryStream

  22. 22

    .map异步回调和事件循环

  23. 23

    循环-带有异步事件

  24. 24

    Flask asyncio aiohttp-RuntimeError:线程“ Thread-2”中没有当前事件循环

  25. 25

    尝试设置ipdb.set_trace():RuntimeError:线程'Thread -....'中没有当前事件循环。

  26. 26

    没有 asyncio 的 Python 3.6 异步等待:如何编写自己最简单的事件循环?

  27. 27

    NodeJS中的文件操作是否利用OS异步(轮询?)还是阻塞事件循环?

  28. 28

    RuntimeError:事件循环在将来完成之前已停止

  29. 29

    Angular中的异步事件麻烦

热门标签

归档