Простая проблема
Обновление конфигурации приложения не отражается на работнике сельдерея.
Конфигурация
В настоящее время у меня есть эта начальная конфигурация в приложении.
В моем config.py
class AppConfig(object):
DISABLED = False
и загружается таким образом, когда сервер приложений запускается в моем app.py .
app = Flask(__name__)
app.config.from_object('config.AppConfig')
Задача Celery
В своей задаче Celery я использую эту конфигурацию, чтобы включить / отключить ее.
@celery.task(bind=True, name="task_example")
def task_example(self):
if app.config['DISABLED'] is True:
return
# otherwise proceed.
, которая вызывается внутри другой службы.
class Service(object):
def process(self):
task_example.delay()
Тестирование
Я обновил конфигурацию до app.config['DISABLED'] == True
внутри теста, который также вызывает класс Service
, который вызывает задачу сельдерея task_example
.
class TaskTest(TestCase):
def test_task(self):
app.config.update(DISABLED=True)
service = Service()
# Problem lies down here because when it was called
# the `DISABLED` remain `False`.
service.process()
К сожалению, task_example()
по-прежнему DISABLED == False
(включено) . Можно обновить его один раз внутри тестового класса и распространить изменения на работника сельдерея?