Форум сайта python.su
Здравствуйте. Стоит задача создать сервис, производящий некоторые преобразования над данными, полученными от пользователя. Происходить это должно следующим образом (на примере картинки):
1. Пользователь загружает на сервер картинку
2. Сервер запускает процесс (cli app), который производит некоторые преобразования над картинкой
3. Сервер отдает обработанную картинку пользователю
Нужно чтобы при загрузке изображения добавлялась задача, сервер следил бы за FIFO списком таких задач, и если этот список не пуст - брал оттуда задачу, выполнял ее и, при наличии, приступал к следующей, пока не будут выполнены все.
Есть ли какое-то решение для реализации такой логики?
P.S. В качестве базы для сайта предполагаю использовать Flask.
Спасибо.
Офлайн
mr.MУ тебя должен быть контроль над сервером, чтобы ты мог запускать процессы на сервере, которые будут работать, пока не завершатся.
Есть ли какое-то решение для реализации такой логики?
mr.MFlask'ом ты можешь только загружать и отдавать картинки. Делать сам по себе он ничего не будет, только по запросам он работает. Максимум, что он может, - это сохранять в память (в базу данных, например, или в файл). Но чтобы потом к этому обратиться, ему нужно будет говорить “обратись к этому”, сам он туда по расписанию не полезет.
В качестве базы для сайта предполагаю использовать Flask.
Отредактировано py.user.next (Июнь 2, 2020 10:08:25)
Офлайн
Мы нечто подобное делали через celery, только веб-сервером у нас Джанго был.
По запросу создаётся задача celery, а клиенту сразу возвращается ответ, что запрос поставлен в очередь, и присвоенный id этого запроса. Когда задача из очереди отрабатывает, она скидывает свои результаты (или данные об ошибке, если что-то не так) в базу данных.
Клиент периодически делает запросы к веб-серверу, на тему “как там дела с моим запросом, у которого такой id?”, и в какой-то момент получает ответ, что работа закончена, результат такой-то. Вроде бы возможно с помощью неких вебсокетов сделать так, чтобы не спамить постоянными запросами от клиента, но в этом я уже не разбираюсь.
Вообще, celery довольно неприятная хрень, и с ней много мороки.
Отредактировано Striver (Июнь 3, 2020 14:03:30)
Офлайн
StriverПросто это решения для крупных проектов. И кстати очень удобное.
Вообще, celery довольно неприятная хрень, и с ней много мороки.
Офлайн