DAG выполняет нормально из веб-интерфейса, но «проваливается» при запуске через командную строку - PullRequest
0 голосов
/ 14 января 2019

Я пытаюсь проверить свою группу обеспечения доступности баз данных, используя интерфейс командной строки, во время разработки новых функций, но я не могу этого сделать. Мои группы DAG, DAG_ID = sample_dag, file: sample_dag.py находятся в папке ~ / airflow / dags (Ubuntu) и могут быть выполнены нормально через веб-интерфейс (нажав на значок Play). Внутри DAG есть несколько вызовов BASH OPERATOR, и каждый сценарий выполняется корректно, выводя протоколированный результат.

Однако я не могу получить доступ к той же функциональности DAG через командную строку, запускается из той же папки, например: визуализация воздушного потока sample_dag all 2019-01-14T06: 04: 05

Вывод вышеуказанной команды: Test Dag Begin Test Dag End **** airflow.exceptions.AirflowException: dag_id не может быть найден: sample_dag. Либо даг не существует, либо не удалось разобрать. ****

Печать отладки в DAG выполняется, но сценарий Bash не вызывается (журнал сценариев не создается).

import datetime as dt
from airflow import DAG
from airflow.operators.bash_operator import BashOperator

default_args = {
    'owner': 'airflow',
    'start_date': dt.datetime(2019, 1, 12),
    'retries': 1,
    'retry_delay': dt.timedelta(minutes=5),
    'email_on_failure': False,
    'email_on_retry': False,
}

dag = DAG('sample_dag', default_args=default_args, schedule_interval=None)

t0 = BashOperator(
    task_id='all', bash_command='echo "Starting Tests..."', dag=dag)

t1 = BashOperator(
    task_id='test_1',
    bash_command='python3 /home/ubuntu/scripts/test_1.py &>> /home/ubuntu/scripts/test.log',
    dag=dag)

t2 = BashOperator(
    task_id='test_2',
    bash_command='python3 /home/ubuntu/scripts/test_2.py &>> /home/ubuntu/scripts/test.log',
    dag=dag)

t3 = BashOperator(
    task_id='final', bash_command='echo "Client Profile Tests Complete"', dag=dag)

print("Test Dag Begin")

t0 >> t1
t0 >> t2
t1 >> t3
t2 >> t3

print("Test Dag End")

1 Ответ

0 голосов
/ 15 января 2019

Команда airflow render cli просто отображает параметры оператора, которые являются шаблонными. Не будет работать ваш DAG.

airflow render [-h] [-sd SUBDIR] dag_id task_id execution_date

Вы должны использовать trigger_dag, чтобы запустить dag, используя cli

...