2016-10-10 2 views
1

Ich möchte ein Python-Skript ausführen, die einen Datetime-Parameter benötigen und ihre Ausgabe in Slack versetzen. Aber ich weiß nicht, wie Luftstrom Vorlage Variable ds erhalten.Wie kann ich `ds` in SlackAPIPostOperator bekommen?

Lassen Sie uns sagen, ich unten Code haben:

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', 
) 

Weil ich mit airflow backfill dag_id -s 2016-10-01 laufen wird, die ds (hier ist 2016.10.01) sollte Text nachzulassen passieren.

Ich versuche, Python-Skript-Ausgabe in eine Datei schreiben und dann lesen und übergeben, um direkt Text zu verlieren. Aber ich denke nicht, dass das eine perfekte Lösung ist.

Antwort

0

Das text Feld von SlackAPIPostOperator ist templated, also, wenn Sie {{ ds }} irgendwo innerhalb des Textes hinzufügen, wird es von jinja eingefügt.

+0

Danke für Ihre Antwort. Aber ich möchte das {{ds}} für einen Python-Operator, es kann zu einer Funktion übergeben. Ich denke, diese Frage hat keine Antwort darauf. – MoreFreeze

+0

Innerhalb des PythonOperators können Sie 'provide_context = True' angeben, ein' ** kwargs' zu der aufgerufenen Funktion hinzufügen und dann über 'kwargs ['ds']' 'darauf zugreifen. Wenn Sie versuchen, innerhalb der DAG-Definition selbst auf "ds" zuzugreifen, ist das nicht wirklich möglich. – Nik

+0

Das ist richtig. Danke für deine Antwort. – MoreFreeze

Verwandte Themen