Есть дамп данных размером 4 гб, дамп читаю построчно и добавляю задачи в asyncio task. Создается около 2х миллионов задач в памяти, что естественно памяти не хватает. Как ограничить asyncio task к примеру до 10 000, чтобы после выполнения их, создались новые task из дампа, то есть разбить чтение дампа на части. Задача стоит огромный дамп (который сначала подредактировать) положить в базу данных.
async def main(path, engine):
tasks = []
with jsonlines.open(path) as reader:
for inx, obj in enumerate(reader, start=1):
task = asyncio.create_task(load_today_db(engine=engine, obj=obj))
tasks.append(task)
await asyncio.gather(*tasks)