1. ホーム
  2. python

[解決済み] Python3.6 AttributeError: モジュール 'asyncio' には 'run' という属性がありません。

2023-05-28 06:59:25

質問

私は https://hackernoon.com/asynchronous-python-45df84b82434 . これは非同期パイソンについてで、私はここからコードを試してみましたが、私は奇妙なエラーが出ています。 そのコードとは `

import asyncio
import aiohttp

urls = ['http://www.google.com', 'http://www.yandex.ru', 'http://www.python.org']

async def call_url(url):
    print('Starting {}'.format(url))
    response = await aiohttp.ClientSession().get(url)
    data = await response.text()
    print('{}: {} bytes: {}'.format(url, len(data), data))
    return data

futures = [call_url(url) for url in urls]

asyncio.run(asyncio.wait(futures))

実行しようとすると、こう表示されます。

Traceback (most recent call last):
  File "test.py", line 15, in <module>
    asyncio.run(asyncio.wait(futures))
AttributeError: module 'asyncio' has no attribute 'run'
sys:1: RuntimeWarning: coroutine 'call_url' was never awaited

ayncioという名前のファイルがないのですが、証明はありますか?

>>> asyncio
<module 'asyncio' from '/usr/lib/python3.6/asyncio/__init__.py'>

どのように解決するのですか?

asyncio.run はPython 3.7で追加されたものです。3.5-3.6では、あなたの例はおおよそ次のものと同等です。

import asyncio

futures = [...]
loop = asyncio.get_event_loop()
loop.run_until_complete(asyncio.wait(futures))