Воздушный поток: настройте переменные даты и времени через веб-приложение - PullRequest
0 голосов
/ 23 октября 2019

Вопрос

  • Можно ли настроить типизированную переменную datetime через веб-приложение? Например, если я хочу изменить значение переменной start_date .

  • Я знаю, как настроить строковые или числовые значения через веб-приложение. Но просто интересно, могу ли я сделать то же самое для переменных даты и времени? Я посмотрел здесь на использование макросов. Но не было никакого успеха. Я также попытался добавить необработанные строковые значения, но это тоже не сработало

  • Я знаю, что могу определить start_date как строку в моем файле DAG изатем преобразуйте его в объект datetime в файле. Это не то, что я спрашиваю

  • Обратите внимание, что этот вопрос конкретно касается установки значения переменной datetime из веб-приложения. Мне также было бы интересно установить его из кли. Все, что не требует изменения кода. Спасибо

1 Ответ

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

Я не видел этой возможности на UI.

Вы можете сделать это, используя plugins . Это всего лишь пример. Вам необходимо создать папку plugins и задать полный путь к переменной plugins_folder в airflow.cfg. Пример моего плагина (my_plugin.py):

# plugins
#└── my_plugin
#    └── my_plugin.py

from airflow.models import DagRun
from airflow.plugins_manager import AirflowPlugin
from airflow.utils import db
from flask import render_template_string
from flask_admin import BaseView
from flask_admin import expose

appbuilder_views = []


class MyExample(BaseView):
    @expose('/')
    def index(self):
        # I just print all dag ids + start_date's
        content = ''
        with db.create_session() as session:
            for dag_run in session.query(DagRun).all():
                content += 'start_date: %s, dag_id: %s<br/>' % (
                    dag_run.start_date,
                    str(dag_run.dag_id)
                )
        return render_template_string(content)


ADMIN_VIEW = MyExample(category="System", name="My")


class AirflowGitPullPlugins(AirflowPlugin):
    name = "my_plugin"
    operators = []
    hooks = []
    executors = []
    macros = []
    admin_views = [ADMIN_VIEW]
    flask_blueprints = []
    menu_links = []
    appbuilder_views = appbuilder_views
    appbuilder_menu_items = []

Перезагрузите airflow web-server и откройте домашнюю страницу. Вы увидите новое меню:

menu

Нажмите на пункт меню, вы увидите нашу пользовательскую страницу:

dags

Таким образом, вы можете создавать любой шаблон и создавать любые пользовательские функции ...

Также помните, что вам необходимо перезапустить планировщик воздушного потока после любых изменений в db

Не уверен, что есть более простое решение. Вы также можете искать плагины. Надеюсь, это поможет.

...