2016-10-10 14 views
1

私はdatetime paramを必要とするPythonスクリプトを実行し、その出力を余裕を持って残したいと思っています。しかし、気流テンプレート変数dsを取得する方法がわかりません。SlackAPIPostOperatorで `ds`を取得するにはどうしたらいいですか?

私はコードの下に持っている、のは、言ってみましょう:

def make_txt(): 
    # get ds 
    ds = get_ds() 
    ds = ds * 3 + 4/5 # do something with ds 
    return ds 

slack_task = SlackAPIPostOperator(
    text=make_txt(), 
    token='xoxp-xxxxxxx', 
) 

私はairflow backfill dag_id -s 2016-10-01で実行されますので

dsは(ここでは2016年10月1日である)テキストをたるみに渡す必要があります。

私は、ファイルにpythonスクリプトの出力を書き込んだ後、それを読んで、直接テキストをスラックに渡そうとします。しかし、私はそれが完璧な解決策だとは思わない。

答えて

0

textフィールドがSlackAPIPostOperatorでテンプレート化されているため、テキスト内に{{ ds }}を追加すると、jinjaによって挿入されます。

+0

あなたの答えをありがとう。しかし、私はいくつかのpython演算子のための{{ds}}を望んでいます、それはいくつかの関数に渡すことがあります。私はこの質問には答えがないと思う。 – MoreFreeze

+0

PythonOperator内で 'provide_context = True'を指定し、あなたが呼び出した関数に' ** kwargs'を追加して、 'kwargs ['ds']'を使ってアクセスすることができます。 DAG定義自体の中で 'ds'にアクセスしようとしている場合、それは実際には不可能であることに注意してください。 – Nik

+0

それは正しいです。お返事をありがとうございます。 – MoreFreeze

関連する問題