A Better Coroutine Example
Let's see a good example of coroutine using aiohttp package.
The aiohttp
package is designed for creating asynchronous HTTP
clients and servers. You can install it with pip like this:
Press + to interact
pip3 install aiohttp
Using aiohttp
to download files
Once that’s installed, let’s update our code to use aiohttp
so that we
can download the files:
Note: Click on the link below the widget to see the list of downloaded pdf(s) opened.
import aiohttp import asyncio import async_timeout import os import time async def download_coroutine(session, url): with async_timeout.timeout(1000): async with session.get(url) as response: filename = os.path.basename(url) with open(filename, 'wb') as f_handle: while True: chunk = await response.content.read(1024) if not chunk: break f_handle.write(chunk) await response.release() return response.status == 200 async def main(loop): urls = ["http://www.irs.gov/pub/irs-pdf/f1040.pdf", "http://www.irs.gov/pub/irs-pdf/f1040a.pdf", "http://www.irs.gov/pub/irs-pdf/f1040ez.pdf", "http://www.irs.gov/pub/irs-pdf/f1040es.pdf", "http://www.irs.gov/pub/irs-pdf/f1040sb.pdf"] async with aiohttp.ClientSession(loop=loop) as session: for url in urls: print(await download_coroutine(session, url)) if __name__ == '__main__': loop = asyncio.get_event_loop() loop.run_until_complete(main(loop))
Using aiohttp to download the files
You ...