Лучший способ запросить Celery с помощью AJAX из внешнего интерфейса, чтобы узнать, завершено ли созданное задание или нет? - PullRequest
4 голосов
/ 31 января 2011

Я использую Django с Celery + RabbitMQ для создания задач конвертации видео, загружаемых пользователями. Теперь я знаю, как обращаться к сельдерею, чтобы получить статус. Мой вопрос: где сохранить идентификатор_задачи, связанный с каждой задачей, стоит ли сохранять ее в моделях или в кеше django?

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

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

Ответы [ 2 ]

8 голосов
/ 16 февраля 2011

Если у вас установлено django_celery , вы можете запрашивать представления типа task_status или is_task_successful, которые входят в пакет djcelery.views.Они возвращают словарь JSON, чтобы вы могли обрабатывать их с помощью JavaScript.

4 голосов
/ 31 января 2011

Обратитесь к моему ответу на связанный вопрос: Проверьте, выполняется ли еще задание на сельдерей

Таким образом, после установки поля celery_task вы можете легко определить представление ajax, которое будет возвращать состояние задачи в требуемом формате.

...