Как обновить flask app.config, который будет распространяться внутри задачи сельдерея? - PullRequest
0 голосов
/ 30 апреля 2020

Простая проблема

Обновление конфигурации приложения не отражается на работнике сельдерея.

Конфигурация

В настоящее время у меня есть эта начальная конфигурация в приложении.

В моем 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 (включено) . Можно обновить его один раз внутри тестового класса и распространить изменения на работника сельдерея?

...