Без изменения самого кода, есть ли способ игнорировать задачи в Celery?
Например, при использовании Django почты, есть настройка Dummy Backend . Это идеально, так как позволяет мне из файла .env
деактивировать отправку почты в некоторых средах (таких как тестирование или подготовка). Сам код, который обрабатывает отправку почты, не изменяется с помощью if
операторов или декораторов.
Для задач сельдерея я знаю, что я мог бы сделать это в коде, используя макеты или декораторы, но я бы хотел сделать это в чистый способ, который соответствует 12 факторам, как с Django письмами. Любая идея?
РЕДАКТИРОВАТЬ, чтобы объяснить, почему я хочу сделать это:
Одной из основных причин этого является то, что он создает связь между Django веб-сервером и задачами Celery. Например, при запуске модульных тестов, если сервер-посредник (для меня Redis) не запущен, то если вызывается метод delay()
, он останавливается навсегда, потому что нет никакого тайм-аута, когда Celery пытается отправить задачу в Redis. С точки зрения архитектуры это очень плохо. Я бы хотел, чтобы мои юнит-тесты могли работать без необходимости запуска брокера из Celery!
Спасибо!