2017-01-23 2 views
4

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

Вот что я пробовал так:

airflow run dag_1 task_1 2017-1-23 

В первый раз я побежал эту команду, задача выполнена правильно, но когда я попробовал еще раз это не сработало. Вот еще одна команда я побежал:

airflow backfill dag_1 -s 2017-1-23 -e 2017-1-24 

Я не знаю, чего ожидать от этой команды. Будут ли выполнять трюки каждый день с 23 до 24? Перед тем, как выполнить две команды выше. Я сделал это:

airflow initdb 
airflow scheduler 
airflow webserver -p 8085 --debug & 

Вот мой даг

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(2017, 1, 23, 12), 
    'email': ['[email protected]'], 
    'email_on_failure': False, 
    'email_on_retry': False, 
    'retries': 1, 
    'retry_delay': timedelta(minutes=5), 
} 

dag = DAG(
    'dag_1', default_args=default_args, schedule_interval=timedelta(1)) 

t1 = BashOperator(
    task_id='create_clients', 
    bash_command='Rscript /scripts/Cli.r', 
    dag=dag) 

t2 = BashOperator(
    task_id='create_operation', 
    bash_command='Rscript Operation.r', 
    retries=3, 
    dag=dag) 

t2.set_upstream(t1) 

Скриншот: Tree View

UPDATE

airflow run dag_1 task_1 2017-1-23T10:34 
+1

Если вы на самом деле пытался что-то, пожалуйста, [править] Ваш вопрос, чтобы включить [mcve ]. –

ответ

8

Если вы запустите его один раз с

airflow run dag_1 task_1 2017-1-23 

Прогон сохраняется и запустить его снова не будет ничего делать, вы можете попробовать повторно запустить его, заставляя его

airflow run --force=true dag_1 task_1 2017-1-23 

Команда воздуха засыпки будет работать в исполнение, что бы запустить в период времени, указанный от даты начала до конца. Это будет зависеть от того, какой график вы устанавливаете в DAG, если вы установите его для запуска каждый час, который он должен запускать 24 раза, но он также не будет повторно выполнять ранее выполненные прогоны.

Вы можете удалить задачу, как если бы он никогда не пытался

airflow clear dag_1 -s 2017-1-23 -e 2017-1-24 

Также проверьте консоли документов здесь: https://airflow.incubator.apache.org/cli.html разницы

+0

Спасибо за ваше объяснение. Я попытался добавить время для первого запуска (см. Обновление). Почему запуск выполняется немедленно, даже если указанное время не достигнуто? На пример мое текущее время 10:30, и я указываю 10:34 в перспективе ... Он работает сразу, это нормальное поведение? – djohon

+0

Я верю (не уверенно на 100%), что он запускает задачу, как если бы это была указанная дата, поскольку вы передали ее в качестве аргумента. Поэтому, когда он завершается, информация, сохраненная в ходе прогона, говорит, что в это время завершена работа над этой задачей. – Necravolver

1

между датой начала, датой выполнения и засыпка

Заполнение выполняется для запуска DAG в явном виде для проверки/ручного запуска DAG/re с помощью DAG, который выдает ошибку. Вы делаете это с помощью CLI

airflow backfill -s <<start_date>> <<dag>> 
#optionally provide -1 as start_date to run it immediately 

start_date является, как следует из названия, даты, когда определение DAG действует

execution_date дата-время, когда он должен быть запущен.Это вы предоставите во время тестирования отдельных задач DAG, как показано ниже

airflow test <<dag>> <<task>> <<exec_date>> 

что команда для запуска НАГ

Засыпка это команда для запуска DAG в явном виде. В противном случае вы просто поставить DAG в папку DAGBAG и планировщик будет выполнять его в соответствии с графиком, определенным в определении DAG

airflow backfill -s <<start_date>> <<dag>> 
#optionally provide -1 as start_date to run it immediately 
Смежные вопросы