на микросервисы.
У меня есть сервис обработки фотографий (object detection).
Хочу реализовать работу таким образом:
1) Сервис (на c#) получает post запрос с фотографией.
2) Загружает фотографию и кладёт её в хранилище (например в s3).
3)Создаёт фоновую задачу и клалет её в очередь сообщений.
4) отдаёт в ответе URL по которому можно проверить статус задачи.
-----
Очередь сообщений слушают воркеры на Python. Они берут фотографии и прогоняют их через нейронку. И отдают ответ о выполненной работе.
Проблема возникает в том что я хочу использовать Celery в python воркирах.
И если бы сервис у меня был бы не на c# а на Python то тут все было бы просто. Но я хочу использовать именно c#.
Как лучше быть?
https://devacademy.ru/article/ochered-soobschenij-i-asinhronnyie-zadachi-s-pomoschyu-celery-i-rabbitmq/
В питоне это можно решать так
Есть воркера файл с функцией my_ml_task() с пометкой @app.task
Эта функция делает то что мне нужно - инферит нейронку и делает предикт. И возвращает json
Далее в Web api на Python я вызываю
from tasks import my_ml_task
#запуск задачи
predict = my_ml_task.delay()
predict.ready() #для проверки готов ли ответ.
predict.get() #для вывода результата
Все. Вся работа скрыта в фреймворке celery.
Хрчу получить такой же опыт в api на C#.
Как можно использовать celery оттуда? Вдруг кто то видел?
Не очень понимаю, зачем тебе еще какая-то селери. Вот у тебя в реббите уже лежит очередь заданий. Берешь воркером задачу и делаешь. Если их много, они все берут. Очень масштабируемо, очень похристиански.
Обсуждают сегодня