How to Run a Simple Airflow DAG

djohon picture djohon · Jan 23, 2017 · Viewed 44.2k times · Source

I am totally new to Airflow. I would like to run a simple DAG at a specified date. I'm struggling to make difference between the start date, the execution date, and backfilling. And what is the command to run the DAG?

Here is what I've tried since:

airflow run dag_1 task_1 2017-1-23

The first time I ran that command, the task executed correctly, but when I tried again it did not work.

Here is another command I ran:

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

I don't know what to expect from this command. Will the DAGs execute every day from 23 to 24?

Before running the two commands above, I did this:

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

Here is my 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(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)

Screenshot:Tree View

UPDATE

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

Answer

Necravolver picture Necravolver · Jan 24, 2017

If you run it once with the

airflow run dag_1 task_1 2017-1-23

The run is saved and running it again won't do anything you can try to re-run it by forcing it

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

The airflow backfill command will run any executions that would have run in the time period specified from the start to end date. It will depend what schedule you set on the DAG, if you set it to trigger every hour it should run 24 times, but it also won't re-execute previously executed runs.

You can clear the task as if it NEVER ran

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

Also check the cli docs here: https://airflow.incubator.apache.org/cli.html