我尝试阅读 https://hackernoon.com/asynchronous-python-45df84b82434 . 它是关于异步 python 的,我尝试了其中的代码,但我遇到了一个奇怪的错误。 代码是: `
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))
关于Python3.6 属性错误: module 'asyncio' has no attribute 'run' ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52796630/