Asynchronous Python Programming using asyncio and async/await lets you write code that runs many processes concurrently. It makes your code more responsive and stops it from wasting time waiting for slow file and internet access. It is simpler to write, easier to reason about, and uses less memory than threads and processes.
We start the video with an overview of asyncio, showing the building blocks and core syntax in a few simple examples. Next, you will see how to make normal Python code work in an asynchronous environment, to minimize blocking and facilitate cooperative multi-tasking. Further, we cover an asyncio use-case working with network connections such as web servers using asynio’s streams API, followed by communication between coroutines and synchronization of coroutines. We will also look at using the asyncio library to easily wrap blocking code into threads and processes, and some non-blocking replacement libraries used with asyncio such as aiohttp and aiofiles. The uvloop and unsync libraries will be discussed as ways to speed up and simplify your asyncio code. The following section covers writing more robust asyncio code to test and debug your code, handle stuck tasks using time out, logging and error handling and task management.
Having gained a firm understanding of how to code using asyncio, the course finishes with a look under the hood. This starts by walking you through a hand-coded example of an event loop (the core of asyncio), an overview of the different types of awaitables and some useful functions of the event loop which gives you fine grain control
What you will learn
- What are the differences between asyncio, threads and processes
- How to run code concurrently using coroutines, asyncio, and async/await
- How to work with network connections using streams
- How to write robust and modern asynchronous code
- How asyncio works and how to use the low level functions for fine-grain control