#airflow
#воздушный поток
Вопрос:
У меня есть база данных воздушного потока, которую я могу запустить с некоторыми параметрами, используя:
airflow trigger_dag 'my_dag' --conf '{"key":"value"}'
тогда я могу получить «значение» в моей базе данных следующим образом:
context['dag_run'].conf.get('key')
Я хотел бы сделать то же самое, используя засыпку:
airflow backfill 'my_dag' --conf '{"key":"value"}' -s 2019-04-15 -e 2019-04-16
Возможно ли получить переданное значение в —conf для обратной засыпки?
Ответ №1:
Я столкнулся с этим вопросом, столкнувшись с той же проблемой, и, хотя прошло несколько лет, я подумал, что это может кому-то помочь.
Как подозревал OP, предыдущие выполнения DAG влияют на то, будет ли обратная засыпка использовать conf, указанный в командной строке. Это было недавно поднято в этой проблеме, и исправление было объединено: https://github.com/apache/airflow/pull/22837
Ответ №2:
Да, команда обратной засыпки также имеет conf
параметр.
Из: https://airflow.apache.org/1.10.3/cli.html#backfill
airflow backfill [-h] [-t TASK_REGEX] [-s START_DATE] [-e END_DATE] [-m] [-l]
[-x] [-i] [-I] [-sd SUBDIR] [--pool POOL]
[--delay_on_limit DELAY_ON_LIMIT] [-dr] [-v] [-c CONF]
[--reset_dagruns] [--rerun_failed_tasks] [-B]
dag_id
-c, --conf
JSON string that gets pickled into the DagRun’s conf attribute
Комментарии:
1. возможно, проблема в том, что я пытаюсь заполнить базу данных, которая была запущена с параметрами по умолчанию. Я имею в виду, когда планировщик воздушного потока выполнял DAG, у него не было никаких параметров. Я очистил экземпляр, затем выполнил команду: обратная засыпка воздушного потока -conf … str(context[‘dag_run’].conf) равно None . Почему это так?