A Better Coroutine Example
Let's see a good example of coroutine using aiohttp package.
We'll cover the following...
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 ...