#airflow
#воздушный поток
Вопрос:
Я хочу запустить скрипт python, которому нужен параметр datetime, и опубликовать его вывод в slack. Но я не знаю, как получить переменную шаблона воздушного 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-01) должен перейти к тексту slack.
Я пытаюсь записать вывод скрипта python в файл, а затем прочитать его и напрямую перейти к тексту slack. Но я не думаю, что это идеальное решение.
Ответ №1:
text
Поле SlackAPIPostOperator
является шаблонным, поэтому, если вы добавите {{ ds }}
что-то в текст, оно будет вставлено jinja.
Комментарии:
1. Спасибо за ваш ответ. Но мне нужен {{ ds}} для некоторого оператора python, он может передаваться в какую-то функцию. Я думаю, что на этот вопрос нет ответа по этому поводу.
2. В PythonOperator вы можете указать
provide_context=True
, добавить a**kwargs
к вызываемой вами функции, а затем получить к ней доступ черезkwargs['ds']
. Обратите внимание, что если вы пытаетесь получить доступ к самому определению базы данных, это на самом деле невозможно.ds