2011-05-18 5 views
0

Я использую djcelery и djkombu. Я бы использовал RabbitMQ (так как это рекомендуемый вариант), но RabbitMQ использует слишком много памяти на моем VPS, и я становлюсь дешевым.Можно ли указать, что задача task.delay или task.apply_async должна завершиться неудачно, если celeryd не запущен?

Я думаю, что было бы неплохо, если бы в моем приложении было бы исключение, если мой код попытается запланировать задачу, а celeryd не запущен. Это своего рода резервный план для наблюдения за сельдереем с помощью супервизора, nagios и т. Д.

Сначала я подумал, что настройка immediate сделает это, но это не сработало с моей конфигурацией Django ORM.

ответ

0

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

 Смежные вопросы

  • Нет связанных вопросов^_^