asyncio,已弃用的替代品 run_forever
asyncio, alternatives to deprecated run_forever
我正在使用 aiohttp 创建一个网络服务器,这里是我用来启动它的代码:
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
我正在使用 run_forever 来保持服务器启动并且在创建后不关闭它。不幸的是我现在收到这个警告:
/Users/thomas/workspace/eykar/eykache2/eykache/__main__.py:17: DeprecationWarning: There is no current event loop
loop = asyncio.get_event_loop()
根据文档,我应该考虑使用 asyncio.run,但我不知道如何保留我的程序 运行。
run_forever
未弃用。使用它没有错。然而,不推荐使用的是在没有 运行 时调用 get_event_loop
并期望它为您创建一个。在未来的某个时候,这将停止这样做。相反,您需要制作自己的循环。
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
您也可以将所有这些替换为 asyncio.run(main())
和 main
内的 while True
循环。
我正在使用 aiohttp 创建一个网络服务器,这里是我用来启动它的代码:
loop = asyncio.get_event_loop()
loop.create_task(main())
loop.run_forever()
我正在使用 run_forever 来保持服务器启动并且在创建后不关闭它。不幸的是我现在收到这个警告:
/Users/thomas/workspace/eykar/eykache2/eykache/__main__.py:17: DeprecationWarning: There is no current event loop
loop = asyncio.get_event_loop()
根据文档,我应该考虑使用 asyncio.run,但我不知道如何保留我的程序 运行。
run_forever
未弃用。使用它没有错。然而,不推荐使用的是在没有 运行 时调用 get_event_loop
并期望它为您创建一个。在未来的某个时候,这将停止这样做。相反,您需要制作自己的循环。
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
您也可以将所有这些替换为 asyncio.run(main())
和 main
内的 while True
循环。