Привет, python.su.
Столкнулся с проблемой из-за неопытности, прошу вашей помощи.
Стоит задача:
есть бинарный файл (3-6Мб), который нужно отдавать клиентам в измененном виде. Изменять “на лету” не вариант (1-2 минуты на процедуру), поэтому хотел узнать у опытных товарищей, как это лучше реализовать. Изначально думал написать бэкэнд-демон, который будет его изменять и ложить результат в очередь, из которой они будут доставаться и отдаваться клиентам. Нужно чтобы каждая копия уходила лишь одному клиенту. Копии не имею каких-либо признаков, и flask не сможет выбирать их по id или названию. Хотелось бы что-то похожее на Queue и её put() и get() методы, но для файлов.
Вопрос:
Как это лучше реализовать с точки зрения архитектуры, и какое хранилище (очередь) лучше выбрать, чтобы выбрав файл он автоматически выпадал из очереди и два клиента не могли его получить обратившись одновременно.
UPD:
Я склоняюсь к redis-queue и Mongo GridFS. RQ будет создавать и запускать воркеры на модификацию файла, сохранять файл в GridFS, получать _id и хранить его в очереди. Если клиент обращается за файлом, flask берет _id из очереди, обращается с ним к GridFS отдаёт и удаляет файл. Это будет нормальным подходом?