Бэкенд Django с рабочим celery - порог памяти
У меня есть система с некоторыми периодическими задачами. Каждая периодическая задача считывает файлы и создает из них объекты в оперативной памяти.
Для предотвращения потери данных содержимое кэшированного файла сразу же сохраняется из перидоической задачи в базу данных после создания из него объекта. Затем файл удаляется из источника.
Объект ставится в очередь в RabbitMQ, а рабочие Celery принимают его для дальнейшей обработки и параллелизма.
Перед кэшированием очередного файла с помощью psutil проверяется использование памяти в системе. Если оно превышает пороговое значение, периодическая задача прекращает чтение файлов и продолжает его при следующем выполнении.
Мой вопрос таков
В принципе, это вполне осуществимый подход, если данные не должны быть потеряны (файлы либо хранятся в базе данных, либо все еще находятся в исходной папке)
Если это хороший подход для сохранения низких усилий по синхронизации (файлы удаляются после чтения, рабочий работает с объектами и не удаляет файлы, и нет необходимости в синхронизации с периодической задачей)
Какой порог памяти является "безопасным" и достаточно быстрым. Размер файла может достигать 40 МБ.