Airflow 動(dòng)態(tài)指定DAG運(yùn)行隊(duì)列

Airflow版本 2.0.1
根據(jù)官網(wǎng)提示,airflow 支持hook函數(shù),可以在DAG運(yùn)行開始之前 根據(jù)我們觸發(fā)的參數(shù) 指定隊(duì)列
https://github.com/apache/airflow/discussions/14987
新建 airflow_local_settings.py 文件, 放在${AIRFLOW_HOME}/config/airflow_local_settings.py
無(wú)需重啟scheduler 即可加載。

def task_instance_mutation_hook(task_instance):
    dag_run = task_instance.get_dagrun()
    conf = dag_run.conf
    # print(conf) 
    # conf為 trigger_dag 的 --conf  參數(shù)
    if conf['key4']:
        if 'change_queue' in conf:
            return
        else:
            task_instance.queue = conf['key4']
            conf["change_queue"] = 'true'

上面代碼表示,在DAG 剛剛要運(yùn)行的時(shí)候,會(huì)執(zhí)行上面的hook函數(shù) 拿到conf 根據(jù)conf中的 key4 重新執(zhí)行DAG的queue。

DAG觸發(fā)參數(shù)為

 airflow dags trigger 'dag_test_bash' -r `uuidgen` --conf '{"key4":"test_param"}'

傳入的參數(shù) key4 的value 會(huì)賦值到 task_instance.queue 也就是在DAG運(yùn)行前 為其動(dòng)態(tài)分配了隊(duì)列,實(shí)際生產(chǎn)中 可以用該種方式去路由DAG到指定ip的機(jī)器去運(yùn)行,我們可以在每臺(tái)機(jī)器起自己IP+業(yè)務(wù)前綴的worker,然后在這里指定,如指定queue為 prod_10.0.0.1的queue。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么是Airflow? Airflow 是一個(gè)使用 python 語(yǔ)言編寫的 data pipeline 調(diào)度和監(jiān)...
    什錦甜閱讀 18,270評(píng)論 0 14
  • 1.Scheduler的啟動(dòng)和停止命令 1.1 Scheduler啟動(dòng)命令 對(duì)于Airflow的Scheduler...
    Mr_Wuuuuuuu閱讀 2,232評(píng)論 0 1
  • 在快速啟動(dòng)部分中設(shè)置很簡(jiǎn)單,構(gòu)建生產(chǎn)級(jí)環(huán)境需要更多的工作,下面來(lái)了解一下。 1. 設(shè)置配置選項(xiàng) 第一次運(yùn)行Airf...
    路小漫閱讀 9,832評(píng)論 0 3
  • 簡(jiǎn)介 airflow是airbnb家的基于DAG(有向無(wú)環(huán)圖)的任務(wù)管理系統(tǒng), 最簡(jiǎn)單的理解就是一個(gè)高級(jí)版的cro...
    lao男孩閱讀 49,675評(píng)論 1 21
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會(huì),身份的轉(zhuǎn)變要...
    余生動(dòng)聽閱讀 10,852評(píng)論 0 11

友情鏈接更多精彩內(nèi)容