【发布时间】:2019-10-02 21:11:45
【问题描述】:
我正在尝试了解 websockets 客户端的 asyncio。我尝试的每段代码都会出现以下错误:
RuntimeError: asyncio.run() 不能从正在运行的事件循环中调用
我尝试了最简单的代码,但它总是给出 RuntimeError。我尝试再次安装完整的 anaconda 发行版等,但找不到问题所在。
我将 Spyder 3.3.3 与 Python 3.7.3 一起使用
应该工作的代码示例:
import asyncio
async def main():
print('hello')
await asyncio.sleep(1)
print('world')
asyncio.run(main())
错误信息:
File "C:\Users\jmart\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 786, in runfile
execfile(filename, namespace)
File "C:\Users\jmart\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", line 110, in execfile
exec(compile(f.read(), filename, 'exec'), namespace)
File "C:/Users/jmart/Documents/asynk2.py", line 8, in <module>
asyncio.run(main())
File "C:\Users\jmart\Anaconda3\lib\asyncio\runners.py", line 34, in run
"asyncio.run() cannot be called from a running event loop")
RuntimeError: asyncio.run() cannot be called from a running event loop
【问题讨论】:
-
您是否尝试从输入
python3.7 asynk2.py的终端运行代码?我的猜测是 Spyder 正在使用事件循环来运行它的 python 控制台/解释器,这导致了这个问题...... -
非常感谢,好像是这个问题,有什么办法可以解决吗?
-
添加
import nest_asyncio和nest_asyncio.apply()似乎是一种解决方案 -
这是this的副本吗?
标签: python python-asyncio python-3.7