Как я могу узнать, поставлена ​​ли DAG на паузу или нет в Airflow? - PullRequest
0 голосов
/ 27 декабря 2018

Я бы хотел приостановить работу групп доступности базы данных, которые являются бездействующими и избыточными. Как узнать, какие группы доступности базы данных не приостановлены, а какие приостановлены?

Итак, у меня есть список групп доступности базы данных, которые должны быть приостановлены с помощью команды bash, котораявыполняет airflow pause <dag_id>.Я хотел бы знать, является ли команда успешной или нет, проверяя состояние pause каждой группы доступности базы данных.Я проверил airflow webserver и похоже, что все мои приостановленные группы доступности баз данных все еще работают.

def pause_idle_dags(dags = ["myTutorial"]):
    """
    Pauses dags from the airflow
    :param dags: dags considered to be idle
    :return: Success state
    """
    # TODO
    for dag in dags:
        command = "airflow pause {}".format(dag)
        print(executeBashCommand(command))

def executeBashCommand(command):
    print('========RUN========', command)
    p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout, stderr = p.communicate()
    if p.returncode != 0:
        print('========STDOUT========\n',stdout.decode())
        print('========STDERR========\n',stderr.decode())
        raise Exception('There is error while executing bash command: '+command+'\nwith log:\n'+stderr.decode())
    return stdout, stderr

1 Ответ

0 голосов
/ 20 февраля 2019

Когда вы запускаете команды воздушного потока, которые инструктируют его выполнить какое-либо действие, он должен отредактировать внутреннюю статистику серверной базы данных, к которой он подключен.По умолчанию поток воздуха с использованием SQLite.Вы можете настроить свой собственный.В любом случае вы можете запросить это для проверки.

например, airflow=# select * from dag where is_paused;

Здесь вы также можете выполнять обновления, такие как

airflow=# update dag set is_paused='false' where is_paused;

...