Для себя. Хочу понять как работает асинхронность в Python на примере фреймворков AsyncIO и Aiohttp. Очень много ресурсов перелопатил на эту тему, но как, когда и зачем применять конструкции типа async/await не понимаю. Хочу понять где лучше применять асинхронность, в чем ее преимущества, что такое event loop, корутины, call-back функции, семафоры, что происходит когда мы вызываем асинхронные функции и прочие тонкости, связанные с этими темами. Хочется, чтобы объяснение было с наглядными примерами, ассоциациями.