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