我尝试阅读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()
仅在实际创建一个新的事件循环启动时才会关闭循环。 - Martijn Pietersasyncio.gather
而不是asyncio.wait
来真正消耗future并处理异常。 - mkapturprint(str(futures))
是[<coroutine object myfun at 0x123123123>]
,似乎就是这样。我该如何获取实际调用期货内部函数的输出呢? - undefined