Давайте признаем, что синхронный код писать проще: он прост, как доска. Но иногда хочется добавить какую-то многозадачность в свой код, особенно если у вас I/O-bound приложение.
Асинхронность в питоне решает эту проблему, но при этом создаёт дополнительные сложности, например, классическую проблему сине-зелёных функций. А если ещё и изначально проект был на синхронном питоне, то не переписывать же его с нуля?
А может, будем писать почти как в go с горутинами?
Ровно так мы и делаем на нашем проекте. Расскажем, как мы к этому пришли и кому за это мы продали душу.