airflow笔记

dag 


dag中定义的了任务类型、任务依赖、调度周期等.dag由task组中,task定义了任务的类型、任务脚本等,dag定义task之间的依赖。

airflow笔记_第1张图片

task

task定义任务的类型,任务内容,以及所属的dag

airflow笔记_第2张图片

调度的话有两种方法,第一种是直接t1 >> t2即可

还有一种是t2.set_upstream(t1)  表示t1结束后运行t2

我们创建dag的时候需要cd到我们的脚本目录下,例如上述文件为run_server.py 那么我们就python3 run_server.py

此时 我们的dag便被创建了,然后我们需要到页面上将dag的状态由off切换为on即可

我们可以通过页面去管理,查看我们的dag执行状态

airflow笔记_第3张图片

Operator

 

即定义任务以什么样的形势去执行,可以是python脚本,也可以是http请求

BaseOperator 基础operator,设置baseoperator会影响所有的operator
BashOperator executes a bash command
DummyOperator 空操作
PythonOperator python脚本
EmailOperator 发送邮件
HTTPOperator 发送http请求
SqlOperator sql
Sensor waits for a certain time, file, database row, S3 key, etc…

scheduler

 

scheduler负责监控dag的,以及调度这些dag;所以当我们通过airflow initdb初始化数据库

然后通过airflow webserver启动项目的时候,我们会发现我们的脚本一直处于running状态,

便是因为我们没有启动 airflow scheduler 启用调度之后,他会定时的去数据库中查找下一个要

运行的dag或者task将其放入队列当中。

在dag中设置schedule_interval来定义调度周期。该参数可以接收cron 表达式datetime.timedelta对象,另外airflow还预置了一些调度周期。

None 不调度,只通过界面上的运行按钮进行触发
@once 只运行一次
@hourly 每小时一次
@daily 一天一次,在00:00:00
@weekly 在周日00:00:00
@monthly 在月底00:00:00
@yearly 在年底00:00:00

backfill:填充任务,手动重跑过去失败的任务(指定日期)。 
catchup:如果历史任务出错,调度器尝试按调度顺序重跑历史任务(而不是按照当前时间执行当前任务)。可以在dag中设置dag.catchup = False或者参数文件中设置catchup_by_default = False来禁用这个功能。

 

executor

执行任务的进程,dag中的task有三种,dag中的task由executor来执行。

executor:SequentialExecutor(顺序执行)、LocalExecutor(本地执行)、CeleryExecutor(远程执行)

 

pool

池用来控制同个pool的task并行度。

 

XComs

默认情况下 task之间的信息是不共享的,我们需要通过XComs参数去实现这一点

Trigger Rules

Trigger Rules定义了某个task在何种情况下执行。默认情况下,某个task是否执行,依赖于其父task(直接上游任务)全部执行成功。airflow允许创建更复杂的依赖。通过设置operator中的trigger_rule参数来控制:

all_success 父task全success
all_failed 父task全failed或者upstream_failed状态
all_done 父task全执行过,不管success or failed
one_failed 当父task中有一个是failed状态时执行,不必等到所有的父task都执行
one_success  当父task中有一个是success状态时执行,不必等到所有的父task都执行
dummy 无条件执行

该参数可以和depends_on_past结合使用,当设置为true时,如果上一次没有执行成功,这一次无论如何都不会执行。

常用命令

airflow 子命令[参数1][参数2]...

eg:airflow test sbb  push_infos 2019-07-10

resetdb Burn down and rebuild the metadata database
render Render a task instance’s template(s)
variables CRUD operations on variables
connections List/Add/Delete connections
pause Pause a DAG
task_failed_deps Returns the unmet dependencies for a task instance from the perspective of the scheduler
version Show the version
trigger_dag Trigger a DAG run
initdb Initialize the metadata database
test Test a task instance. This will run a task without checking for dependencies or recording it’s state in the database.
unpause Resume a paused DAG
dag_state Get the status of a dag run
run Run a single task instance
list_tasks List the tasks within a DAG
backfill Run subsections of a DAG for a specified date range
list_dags List all the DAGs
kerberos Start a kerberos ticket renewer
worker Start a Celery worker node
webserver Start a Airflow webserver instance
flower Start a Celery Flower
scheduler Start a scheduler instance
task_state Get the status of a task instance
pool CRUD operations on pools
serve_logs Serve logs generate by worker
clear Clear a set of task instance, as if they never ran
upgradedb Upgrade the metadata database to latest version

参考地址:https://www.cnblogs.com/skyrim/p/7456170.html#2.2.4%20scheduler

你可能感兴趣的:(airflow)