了解python中的asyncio

时间:2017-02-23 05:17:10

标签: python-3.x python-asyncio

我一直很难理解Python的asyncio模块以及如何不阻止异步调用。例如,给定此代码段:

import aiohttp
import asyncio
import async_timeout

async def fetch(session, url):
    with async_timeout.timeout(10):
        async with session.get(url) as response:
            return await response.text()

async def main(loop):
    print(1)
    async with aiohttp.ClientSession(loop=loop) as session:
        html = await fetch(session, 'http://python.org')
        print(html)
    print(2)

loop = asyncio.get_event_loop()
loop.run_until_complete(main(loop))

我希望,类似于这将如何在Javascript中工作,输出为

1
2
<!doctype html>
<...>

相反,该函数打印1,阻塞直到它返回html,然后打印2.为什么阻止,以及如何/我可以避免阻塞?谢谢你的帮助。

0 个答案:

没有答案