Веб-сервисы Сельдерей

#django #web-services #celery

#django #веб-сервисы #сельдерей

Вопрос:

Я планирую использовать сельдерей для обработки входящих запросов веб-службы. Я понимаю, что сельдерей используется в основном для обработки асинхронных задач. Однако в celery есть много функций, которые мне нравятся и которые могли бы принести пользу в моем проекте — приоритеты, ограничения скорости, распределенная архитектура и т.д.

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

Спасибо,

Ответ №1:

Похоже, что разброс / сбор может быть заданием map / reduce. Если часть mapreduce важна для вас, используйте специализированный фреймворк, такой как Disco или Hadoop. В противном случае вам нужен какой-то сигнал завершения, чтобы вы могли отправить ответ пользователю, как только все подзадачи будут выполнены или отменены. Например, счетчик того, сколько подзадач еще предстоит завершить. Подзадача, которая обнуляет счетчик, может инициировать новую задачу ответа, которая отправляет ответ пользователю и замыкает круг.

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