气流PostgresOperator设置ON_ERROR_STOP

时间:2018-05-18 09:51:49

标签: postgresql airflow

我正在使用PostgresOperator创建一个任务,我想设置ON_ERROR_STOP = 1,有没有办法在PostgresOperator的参数中传递它,或者我应该把它放在我的文件" query.sql&#中34;直接?

my_operator = PostgresOperator(
    task_id='my_operator',
    dag=dag,
    postgres_conn_id='my_server',
    sql="sql/query.sql")

例如在bash中,我可以这样做:

psql -v "ON_ERROR_STOP=1"

或者有一种简单的方法来添加

\set ON_ERROR_STOP on

\unset ON_ERROR_STOP

我的查询周围没有编辑query.sql文件?

谢谢!

1 个答案:

答案 0 :(得分:3)

我对postgres不是很熟悉,但如果你可以将\set ON_ERROR_STOP\unset ON_ERROR_STOP发送到postgres,就像你发送任何其他sql语句一样,你总是可以这样做:

my_operator = PostgresOperator(
    task_id='my_operator',
    dag=dag,
    postgres_conn_id='my_server',
    sql=["\set ON_ERROR_STOP on","sql/query.sql", "\unset ON_ERROR_STOP"])

使用dbapi_hookpostgres_hook使用),您可以通过列表发送多个SQL语句,它们将按照您在列表中指定的顺序在同一会话中执行。