Какой эффективный способ разработки плагинов Airflow? (без перезапуска веб-сервера для каждого изменения) - PullRequest
0 голосов
/ 13 октября 2019

Я ищу эффективный способ разработки плагинов в Airflow.

Текущее поведение: я что-то изменяю в файлах Python, например test_plugin.py, перезагружаю страницу в браузере, и ничего не происходит, пока я не перезапущу веб-сервер. Это очень раздражает и отнимает много времени.

Желаемое поведение: я что-то изменяю в файлах Python, и это изменение отражается после перезагрузки приложения в браузере.

Поскольку Airflow основан на Flask и вFlask желаемого поведения можно достичь, запустив Flask в режиме отладки (экспортируйте FLASK_DEBUG = 1, затем запустите приложение Flask): можно ли каким-то образом добиться поведения Flask в Airflow?

Ответы [ 2 ]

1 голос
/ 08 ноября 2019

Оказывается, это действительно была ошибка в режиме webserver --debug CLI Airflow;будущие версии будут иметь ожидаемое поведение.


Проблема: https://issues.apache.org/jira/browse/AIRFLOW-5867

PR: https://github.com/apache/airflow/pull/6517


Чтобы запустить Airflow с прямой загрузкой, выполните следующую команду (10.7+):

$ airflow webserver --debug

В отличие от модификации кода, предложенной @ herrjeh42, убедитесь, что ваша конфигурация не включает и включает unit_test_mode = True, чтобы включить перезагрузку.

Ура!

0 голосов
/ 16 октября 2019

Вы можете принудительно перезагрузить код Python, запустив веб-сервер airflow в режиме отладки и перезагрузки. Начиная с Airflow 1.10.5 мне пришлось изменить airflow / bin / cli.py (по моему мнению, строка глючит).

old:

app.run(debug=True, use_reloader=False if app.config['TESTING'] else True,

новое:

app.run(debug=True, use_reloader=True if json.loads(app.config['TESTING'].lower()) else False,      

Изменение в airflow.cfg

unit_test_mode = True 

Запустите веб-сервер с

airflow webserver -d
...