2017-04-11 113 views
2

ダグラムを実行するとき、気流UIで、「グラフビュー」で各ジョブの実行の詳細を取得します。エアフローダグのJobIDを取得するにはどうすればよいですか?

ジョブIDは、「scheduled__2017-04-11T10:47:00」のようなものです。

追跡/ログ作成にこのJobIDが必要です。このタスクIDは、各タスク/ dagrunにかかる時間を維持します。

私の質問はです。実行中の同じダッグ内でどのようにJobIDを取得できますか?

おかげで、チェタン

答えて

2

この値は、実際にrun_idと呼ばれ、文脈やマクロを介してアクセスすることができます。

これはコンテキストを介してアクセスされ、bash演算子ではbash_commandフィールドのjinjaテンプレートを介してアクセスされます。マクロで利用できるものに

さらに詳しい情報:神社の

https://airflow.incubator.apache.org/code.html#macros

さらに詳しい情報:

https://airflow.incubator.apache.org/concepts.html#jinja-templating

from airflow.models import DAG 
from datetime import datetime 
from airflow.operators.bash_operator import BashOperator 
from airflow.operators.python_operator import PythonOperator 


dag = DAG(
    dag_id='run_id', 
    schedule_interval=None, 
    start_date=datetime(2017, 2, 26) 
) 

def my_func(**kwargs): 
    context = kwargs 
    print(context['dag_run'].run_id) 

t1 = PythonOperator(
    task_id='python_run_id', 
    python_callable=my_func, 
    provide_context=True, 
    dag=dag 
    ) 

t2 = BashOperator(
    task_id='bash_run_id', 
    bash_command='echo {{run_id}}', 
    dag=dag) 

t1.set_downstream(t2) 

例として、このDAGを使用して、ためにログをチェックします各オペレータには、run_idがログに出力されます。

関連する問題