airflow是基于DAG(有向无环图)的调度任务管理系统,Airflow可以方便查看任务的执行状况(执行是否成功、执行时间、执行依 赖等),可追踪任务历史执行情况,任务执行失败时可以收到邮件通知,查看错误日志。
样例dag:
import airflow
from airflow import DAG
from airflow.operators.python import PythonOperator
from datetime import timedelta
from datetime import datetime
import warnings
warnings.filterwarnings('ignore')
default_args = {
'owner': 'airflow',
'depends_on_past': False,
'start_date': airflow.utils.dates.days_ago(1),
'email': ['[email protected]'],
'email_on_failure': False,
'email_on_retry': False,
'execution_timeout': timedelta(hours=1),
'retries': 3,
'retry_delay': timedelta(minutes=10),
}
dag = DAG(
'airflow_demo',
default_args=default_args,
description='test DAG',
schedule_interval='30 23 * * *',
)
def part_one():
print("run successful.")
part_one = PythonOperator(
task_id='part_one',
python_callable=part_one,
dag=dag
)
schedule_interval为调度间隔,首次调度时间 = start_date + schedule_interval
schedule_interval=None #注意:没有引号
不进行调度设置,每次调用任务需要手动
schedule_interval="once"
首次拉起任务只调度一次
schedule_interval="hourly"
首次调度时间起,每小时执行
schedule_interval="daily"
首次调度时间起,每天执行
schedule_interval="weekly"
首次调度时间起,每周执行
schedule_interval="monthly"
首次调度时间起,每月执行
schedule_interval="yearly"
首次调度时间起,每年执行
schedule_interval="* * * * *" #依次为分、时、月、年、周
使用corn时间格式的时候,需要加上时区时间的差值
根据样例Dag:
'start_date': airflow.utils.dates.days_ago(1),
schedule_interval='30 23 * * *',
实际的第一次调度时间为前一天的上午八点+23小时30分钟
也就是当天的早上七点半
之后的任务也是每天早上七点半触发