2017-11-02 1 views
0

エアフローダグを構築するときは、通常、定期的に実行する簡単なスケジュールを指定します。これが最も一般的に使用されると思います。Airflowでキャッチアップジョブの「予定時刻」を取得するにはどうすればよいですか?

dag = DAG('my_dag', 
     description='this is what it does', 
     schedule_interval='0 12 * * *', 
     start_date=datetime(2017, 10, 1), 
     catchup=False) 

実際のプロセスでは「日付」をパラメータとして使用する必要があるため、現在の日付を確認するだけです。

date = datetime.date.today() 
# do some date-sensitive stuff 
operator = MyOperator(..., params=[date, ...]) 

私の理解では、catchup=Trueを設定するとエアフローstart_dateとなりました(またはend_date)の間のすべてのスケジュール間隔のための私のダグのスケジュールを持っているということです。例えば毎日。

私のdagインスタンスでscheduled_dateを使用するにはどうすればよいですか?

答えて

1

ここに実行日があると思いますが、演算子の中でマクロを使用することができます。詳細はhttps://airflow.apache.org/code.html#macrosでご覧いただけます。だから、空気の流れは、あなたがあなたのdateオペレータの内部動的

生成されている、あなたはオペレータの外で直接

strの中で{{ ds }}を呼び出すことができますする必要はありませんので、たとえばPythonOperatorのために、あなたがprovide_context=Trueが必要になります、それを尊重しますまず関数の最後の引数として**kwargsを渡すと、kwargs['ds']

+0

パーフェクトと呼ぶことができます。私の心の中で '実行日 'とは、タスクが実際に実行されているときです。これは常に「今」ですが、これは意味があり、機能します。 –

関連する問題