RuntimeError: asyncio.run () не может быть вызван из цикла запущенных событий - PullRequest
4 голосов
/ 15 мая 2019

Я пытаюсь узнать об asyncio для клиента websockets. Каждый фрагмент кода, который я пробую, получает следующую ошибку:

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

1 Ответ

5 голосов
/ 15 мая 2019

Это известная проблема , связанная с IPython.

В одну сторону , как вы уже нашли, это использовать nest_asyncio:

import nest_asyncio
nest_asyncio.apply()

Другой предназначен для установки более старой версии tornado:

pip3 install tornado==4.5.3
...