Как проверить воздушный поток в тесте? - PullRequest
0 голосов
/ 24 апреля 2018

Я пытаюсь проверить dag с более чем одной задачей в тестовой среде.Мне удалось протестировать одну задачу, связанную с dag, но я хочу создать несколько задач dag и kick первой задачи.Для тестирования одной задачи в dag я использую

task1.run()

, которая выполняется.Но, то же самое не работает, когда у меня много задач одна за другой в нисходящем направлении от dag.

from airflow import DAG
from airflow.operators.bash_operator import BashOperator
from datetime import datetime, timedelta


default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': datetime(2015, 6, 1),
'email': ['airflow@example.com'],
'email_on_failure': False,
'email_on_retry': False,
'retries': 1,
'retry_delay': timedelta(minutes=5),
# 'queue': 'bash_queue',
# 'pool': 'backfill',
# 'priority_weight': 10,
# 'end_date': datetime(2016, 1, 1),
}

dag = DAG('tutorial', default_args=default_args)

# t1, t2 and t3 are examples of tasks created by instantiating operators
t1 = BashOperator(
task_id='print_date',
bash_command='date',
dag=dag)

t2 = BashOperator(
task_id='sleep',
bash_command='sleep 5',
retries=3,
dag=dag)

t2.set_upstream(t1)

t1.run() # It is executing just first task.

Чтобы запустить вторую задачу, мне нужно запустить с помощью t2.run (), который я не выполняюне хочу, так как я разрабатываю DAG.Как этого добиться?

1 Ответ

0 голосов
/ 02 июля 2018

Я не совсем уверен, что понимаю ваш вопрос, но постараюсь дать ответ.

Если ваша цель состоит в том, чтобы просто запустить DAG или подмножество ее задач вручную, вы можете добиться этого с помощью интерфейса командной строки, например:

  • $ airflow run ... - запустить экземпляр задачи
  • $ airflow test ... - проверить экземпляр задачи, не проверяя зависимости или состояние записи в базе данных
  • $ airflow trigger_dag ... - вызвать определенный прогон DAG для DAG

CLI docs - https://airflow.apache.org/cli.html

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

Во время выполнения, планирование задач в группах обеспечения доступности баз данных и запуск зависимостей в нисходящем направлении после того, как их требования будут выполнены, исполнитель автоматически обрабатывает. Вам не нужно вызывать run () в любом месте вашего кода.

Что касается самого метода run, код все еще там:

Вопросы

  1. Когда вы говорите «проверить группу DAG» в тестовой среде, что именно вы имеете в виду? Как на CI или в модульных тестах?
  2. Это код для теста или код одного из ваших реальных DAG?
  3. Связано ли это с другим вашим недавним вопросом Тестовый тест Dag для Airflow 1.9 в unittest ?
...