Асинхронный сервис под нагрузкой «раздувается» по памяти: создаются тысячи задач через asyncio.create_task, но нагрузка на CPU низкая. Как ограничить параллелизм и удержать память?
Ввести backpressure: использовать ограниченную очередь/семафор (asyncio.Semaphore, asyncio.Queue) или TaskGroup с лимитом; батчировать работу, await-ить завершение перед запуском новых задач, таймауты/отмена подвисших тасков, и не хранить ссылки на завершённые задачи (во избежание удержания памяти).
Библиотека собеса по Python
Ввести backpressure: использовать ограниченную очередь/семафор (asyncio.Semaphore, asyncio.Queue) или TaskGroup с лимитом; батчировать работу, await-ить завершение перед запуском новых задач, таймауты/отмена подвисших тасков, и не хранить ссылки на завершённые задачи (во избежание удержания памяти).
Библиотека собеса по Python