[英]Airflow PostgresOperator Safety -- execution_timeout not respected? How to kill process in DB if it's taking too long?
致力於在我的公司實施 Airflow,但在連接到我們的產品數據庫之前需要執行一些安全檢查。 有人擔心部署愚蠢的 SQL 並占用太多資源。 我的想法是 PostgresOp 任務上的execution_timeout
設置將:
我發現兩者都不是真的。
代碼:
with DAG(
# Arguments applied to instantiate this DAG. Update your values here
# All parameters visible in airflow.models.dag
dag_id=DAG_ID,
default_args=DEFAULT_ARGS,
dagrun_timeout=timedelta(minutes=20),
start_date=days_ago(1),
schedule_interval=None,
tags=['admin'],
max_active_runs=1
) as dag:
kill_test = PostgresOperator(
task_id="kill_test",
execution_timeout=timedelta(seconds=10),
postgres_conn_id="usa_db",
sql="""
SET application_name to airflow_test;
<SELECT... intentionally long running query> ;
""")
Airflow 超時后任務不會失敗。 即使我在 UI 中手動使任務失敗,它也不會終止 Postgres 數據庫中的查詢。 這里有什么交易? 有沒有辦法采取安全措施來硬殺死數據庫中 Airflow 啟動的 Postgres 查詢?
我沒有在這里發帖,但我檢查了:
我猜你正在尋找這個參數runtime_parameters={'statement_timeout': '180000ms'}
。( airflow 示例)
我不知道這是在哪個版本中添加的,但是如果您將apache-airflow-providers-postgres
模塊更新到最新版本,則可以使用上述參數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.