Asynchronous Programming Patterns In Python