Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Обработка изображений, очередь задач [RSS Feed]

#1 Июнь 2, 2020 07:55:05

mr.M
Зарегистрирован: 2020-04-18
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Обработка изображений, очередь задач

Здравствуйте. Стоит задача создать сервис, производящий некоторые преобразования над данными, полученными от пользователя. Происходить это должно следующим образом (на примере картинки):

1. Пользователь загружает на сервер картинку
2. Сервер запускает процесс (cli app), который производит некоторые преобразования над картинкой
3. Сервер отдает обработанную картинку пользователю

Нужно чтобы при загрузке изображения добавлялась задача, сервер следил бы за FIFO списком таких задач, и если этот список не пуст - брал оттуда задачу, выполнял ее и, при наличии, приступал к следующей, пока не будут выполнены все.

Есть ли какое-то решение для реализации такой логики?

P.S. В качестве базы для сайта предполагаю использовать Flask.

Спасибо.

Офлайн

#2 Июнь 2, 2020 10:05:50

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

Обработка изображений, очередь задач

mr.M
Есть ли какое-то решение для реализации такой логики?
У тебя должен быть контроль над сервером, чтобы ты мог запускать процессы на сервере, которые будут работать, пока не завершатся.
Без этого никакой процесс не будет выполняться сам и читать очередь. Каждое действие нужно будет инициировать вручную.

mr.M
В качестве базы для сайта предполагаю использовать Flask.
Flask'ом ты можешь только загружать и отдавать картинки. Делать сам по себе он ничего не будет, только по запросам он работает. Максимум, что он может, - это сохранять в память (в базу данных, например, или в файл). Но чтобы потом к этому обратиться, ему нужно будет говорить “обратись к этому”, сам он туда по расписанию не полезет.



Отредактировано py.user.next (Июнь 2, 2020 10:08:25)

Офлайн

#3 Июнь 3, 2020 14:01:59

Striver
От:
Зарегистрирован: 2006-10-26
Сообщения: 247
Репутация: +  22  -
Профиль   Отправить e-mail  

Обработка изображений, очередь задач

Мы нечто подобное делали через celery, только веб-сервером у нас Джанго был.
По запросу создаётся задача celery, а клиенту сразу возвращается ответ, что запрос поставлен в очередь, и присвоенный id этого запроса. Когда задача из очереди отрабатывает, она скидывает свои результаты (или данные об ошибке, если что-то не так) в базу данных.
Клиент периодически делает запросы к веб-серверу, на тему “как там дела с моим запросом, у которого такой id?”, и в какой-то момент получает ответ, что работа закончена, результат такой-то. Вроде бы возможно с помощью неких вебсокетов сделать так, чтобы не спамить постоянными запросами от клиента, но в этом я уже не разбираюсь.

Вообще, celery довольно неприятная хрень, и с ней много мороки.



Отредактировано Striver (Июнь 3, 2020 14:03:30)

Офлайн

#4 Июнь 3, 2020 18:06:18

VadimK
Зарегистрирован: 2013-07-03
Сообщения: 199
Репутация: +  16  -
Профиль   Отправить e-mail  

Обработка изображений, очередь задач

Striver
Вообще, celery довольно неприятная хрень, и с ней много мороки.
Просто это решения для крупных проектов. И кстати очень удобное.

Можно еще использовать uwsgi задачи и таймеры.
https://uwsgi-docs.readthedocs.io/en/latest/PythonDecorators.html

Офлайн

  • Начало
  • » Web
  • » Обработка изображений, очередь задач[RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version