One of the great advances in Python over the last few years has been the maturation of generators — starting as an alternative way to create an iterator, then as the basis for coroutines, and now as the basis for asynchronous programming. But just what are coroutines, and how do they allow us to write asynchronous code? In this talk, A. Jesse Jiryu Davis walks us through the creation of a simple HTTP client, first without coroutines, then with them, and then using asynchronous techniques. If you’ve often wondered how these additions to Python might be useful in your work, or how the asynchronous additions to Python 3 are used, this talk should be of great interest to you.