У нас есть обширная существующая кодовая база, и мы добавили к уравнению серверы с балансировкой нагрузки с одним главным сервером. Существуют различные приложения, которые содержат модели с загруженными файлами и изображениями, и все они работают нормально... Однако это вызывает очевидную проблему задержки rsync. Rsync находится в crontab и настроен на запуск каждую минуту, но это по-прежнему означает, что существует потенциальное 59-секундное ожидание между созданием контента и его фактическим существованием на веб-серверах.
Что бы я хотел, так это иметь возможность зарегистрировать какой-то обработчик «сообщения об изменении файла», который запускает rsync всякий раз, когда загружается новый файл. Но я не могу найти ничего подобного! В Django есть обработчики загрузки файлов, но они, по-видимому, имеют дело только с фактическим потоком загрузки, а не с файлом, который после этого сохраняется в файловой системе.
Лучшим подходом, который я вижу, является создание простых расширений для FileField, FieldFile, ImageField и ImageFieldFile как части моего проекта и подключение к методам сохранения и удаления в FileField. По сути, для создания настраиваемых полей «Файл» и «Изображение» с добавлением этого поведения. Это не очень сложно сделать, но мне это не кажется самым элегантным решением. Мне нужно будет рассказать Югу о моих новых полях, обновить каждую затронутую модель, а затем создать множество южных миграций (которые, я почти уверен, будут конфликтовать с некоторым кодом, который у нас есть на рассмотрении).
Я также рассматриваю возможность создания собственного класса Storage для проекта, но меня беспокоит, что это может иметь далеко идущие последствия для других фрагментов кода.
Я не могу поверить, что никто не сталкивался с этой проблемой раньше, есть ли канонический подход?
Большое спасибо!