#+TITLE: Understanding Asyncio

Python's asyncio is based approached like an onion[fn:ogre]: by methodically
peeling apart the layers that build it up. 

These notes are aimed at understanding how asyncio actually works, and
not at being productive -- or describing patterns to use asyncio
effectively [fn:patterns].

I've been writing about asyncio for the past several weeks in a fairly
exploratory manner, following my nose and several different ways to
look at what's happening. 

This is an attempt at structuring those notes somewhat more
coherently, and filling in some important gaps:

- The idea behind event loops
- The original PEP: 3156
- Reading the source
- async & await
- The Event Loop
- The Scheduler, Tasks & Futures
- Exception handling
- Async Primitives: sleep, futures, etc.
- Concurrency Primitives: events, locks, Queue, etc.
- Through the looking glass
- Exploring alternative implementations
- [Tentatively] A custom implementation of the event loop

[fn:ogre] or like an ogre.
[fn:patterns] I haven't quite managed to figure that out myself.