Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Flask - выдача и хранени файлов на скачку [RSS Feed]

#1 Фев. 11, 2020 16:29:37

Galvanize
От:
Зарегистрирован: 2011-01-14
Сообщения: 67
Репутация: +  0  -
Профиль   Отправить e-mail  

Flask - выдача и хранени файлов на скачку

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

Вопрос:
Как это лучше реализовать с точки зрения архитектуры, и какое хранилище (очередь) лучше выбрать, чтобы выбрав файл он автоматически выпадал из очереди и два клиента не могли его получить обратившись одновременно.

UPD:
Я склоняюсь к redis-queue и Mongo GridFS. RQ будет создавать и запускать воркеры на модификацию файла, сохранять файл в GridFS, получать _id и хранить его в очереди. Если клиент обращается за файлом, flask берет _id из очереди, обращается с ним к GridFS отдаёт и удаляет файл. Это будет нормальным подходом?



Отредактировано Galvanize (Фев. 11, 2020 17:45:00)

Офлайн

#2 Фев. 12, 2020 01:48:55

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9716
Репутация: +  842  -
Профиль   Отправить e-mail  

Flask - выдача и хранени файлов на скачку

Galvanize
Нужно чтобы каждая копия уходила лишь одному клиенту. Копии не имею каких-либо признаков, и flask не сможет выбирать их по id или названию.
Не имеют признаков - создай эти признаки.

Galvanize
Хотелось бы что-то похожее на Queue и её put() и get() методы, но для файлов.
Так ты используй её для путей к файлам. Пути делаешь уникальными, кладёшь в очередь эти пути, а Flask использует путь для взятия файла и отправки его. Потом путь удаляется и, соотвественно, Flask его больше использовать не может.

Путь - понятие абстрактное. Это не обязательно путь на диске. Это может быть ссылка на что-то, из чего можно сгенерировать путь к файлу на диске.



Отредактировано py.user.next (Фев. 12, 2020 01:50:10)

Офлайн

  • Начало
  • » Web
  • » Flask - выдача и хранени файлов на скачку[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version