私はWebSocketsクライアントのAsyncioについて学びようとしています。コードのすべての部分では、次のエラーが発生します。
RuntimeError:asyncio.run()を実行しているイベントループから呼び出すことはできません
私は最も簡単なコードを試してみました、そしてそれは常にそのランタイムエラーを与えます。私は再び完全なアナコンダディストリビューションをインストールし、問題があるかもしれないものを見つけることができません。
私は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
_
Spyderはそれ自身のイベントループを実行します
_print(asyncio.get_running_loop().is_running())
Returns: True
_
しかし、スレッドごとに許可されています
だからこそ、新しいイベントループを作成しようとするのは
[。asyncio.run(main())
エラーを与えます:RuntimeError: asyncio.run() cannot be called from a running event loop
Est_asyncioと竜巻で既に提案されているものを除いて
_import asyncio
async def main():
print('Hello world!')
asyncio.create_task(main())
_
これで、コードは新しい端末とworksで実行されます
_import asyncio
async def main():
print('Hello world!')
asyncio.run(main())
_