Как только освоил `asyncio.gather`, захотелось всё «параллелить». Наткнулся на чужой запрос к API и поймал себя: один результат помогает формировать следующий. Наивное «запустить всё сразу» тут не сработает, а понимание о зависимостях добавило ещё один верный кусок в голову.
Нейтрально: если задача B требует результата A, её нельзя пустить «вместе». Тогда либо обрабатываешь последовательно, либо сначала выполняешь общих предков, а затем B параллельно.
import asyncio
async def load_user(token): ...
async def load_posts(user_id): ...
async def main(token):
user = await load_user(token) # нужен сначала
return await load_posts(user["id"]) # зависит от результата
Это «открытие» звучит умно, но на деле — обычная последовательность с паузами. Приятно видеть, как понятие ожидания и зависимостей укладывается плотнее: меньше магического «гоню всё в gather» без смысла.