Как я могу использовать асинхронный код в синхронном коде Python? - PullRequest
0 голосов
/ 08 октября 2019

Я разрабатываю приложение django 2.2 (с базой данных mySql) с некоторым кодом для импорта данных из источников CSV. Код является синхронным:

  1. загрузить следующую строку CSV и выполнить некоторую предварительную обработку (нормализовать / очистить входные данные)

  2. создать или обновить модель djangoиз входных данных (и выполнить чтение / запись базы данных)

Здесь есть очевидные узкие места:

  • дисковый ввод-вывод при чтении строки из файла CSV (несколькофайлы с более чем 4M записями)
  • сетевой ввод / вывод при обмене данными с базой данных (сокет tcp / ip)

Процесс можно оптимизировать: считывать входные данные, а затем передавать их асинхроннокод для работы с базой данных - запустить и забыть. Вместо того чтобы ждать окончания работы БД, загрузите следующую строку CSV.

Каковы ваши рекомендации по стратегии оптимизации в этом случае?

1 Ответ

0 голосов
/ 08 октября 2019

для вашего вопроса ...

попробуйте использовать django с gevent

1) использует 'csv' lib и 'csv.reader' и зацикливает на возвращаемом элементе из 'Вызов csv.reader

2) использует Mysqldb или pymsql в качестве библиотеки диалектов django orm для асинхронного доступа к вашей базе данных

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...