Я уже несколько дней борюсь с приложением python, где я ожидаю искать файл или файлы в папке и перебирать каждый файл и каждую запись в нем и создавать объекты, которые будут сохраняться в базе данных Janusgraph. Конкретный OGM, который я использую, требует, чтобы транзакции с базой данных выполнялись асинхронно с использованием asyncio. Я прочитал много блогов, сообщений об asyncio, и я думаю, что понимаю концепцию async, await, задач и т.д ... В моем приложении я определил несколько функций, которые обрабатывают разные части обработки:
- Получает список всех доступных файлов
- Выберите один файл для обработки
- Обходит выбранный файл и читает строку / запись для обработки
- Получает запись, определяет, анализирует входящие и вызывает несколько других функций, которые отвечают за создание объектов модели, прежде чем они будут сохранены в базе данных. Например, я создаю разные функции: User, Session, Browser, DeviceUsed, Server и т. Д.
Я понимаю (и могу ошибаться), что большое преимущество использования asyncio заключается в ситуациях, когда вызов функции обычно блокируется для ввода-вывода, транзакции базы данных, задержки сети и т. Д.
Итак, мой вопрос: нужно ли мне преобразовать все мои функции в сопрограммы и расписание для выполнения цикла событий или только те, которые будут блокироваться, например, фиксация транзакции в базе данных. Я пробовал этот подход с самого начала, и у меня возникли всевозможные проблемы.