Я разрабатываю приложение django 2.2 (с базой данных mySql) с некоторым кодом для импорта данных из источников CSV. Код является синхронным:
загрузить следующую строку CSV и выполнить некоторую предварительную обработку (нормализовать / очистить входные данные)
создать или обновить модель djangoиз входных данных (и выполнить чтение / запись базы данных)
Здесь есть очевидные узкие места:
- дисковый ввод-вывод при чтении строки из файла CSV (несколькофайлы с более чем 4M записями)
- сетевой ввод / вывод при обмене данными с базой данных (сокет tcp / ip)
Процесс можно оптимизировать: считывать входные данные, а затем передавать их асинхроннокод для работы с базой данных - запустить и забыть. Вместо того чтобы ждать окончания работы БД, загрузите следующую строку CSV.
Каковы ваши рекомендации по стратегии оптимизации в этом случае?