Необходимо получить доступ к расписанию в DockerOperator в Airflow

Необходимо получить доступ к расписанию в операторе докера воздушного потока. Например

t1 = DockerOperator(
task_id="task",
dag=dag,
image="test-runner:1.0",
docker_url="xxx.xxx.xxx.xxx:2376",
environment={"FROM": "{{(execution_date + macros.timedelta(hours=6,minutes=(30))).isoformat()}}"})

По сути, мне нужно заполнить расписание как среду докера.


person Devavrata    schedule 31.07.2018    source источник
comment
Это может быть связано с тем, что environment не является шаблонным полем и поэтому шаблон не будет работать. Подробнее об этом см. здесь stackoverflow. ком/вопросы/44855949/   -  person tobi6    schedule 31.07.2018


Ответы (3)


Первые макросы работают, только если это template_fields. Во-вторых, вам нужно проверить, какую версию воздушного потока вы используете, если вы используете 1.9 или ниже, скорее всего, это не будет работать для DockerOperator, о котором @tobi6 упомянул в комментарии, поскольку в template_fields включена только команда (https://github.com/apache/incubator-airflow/blob/v1-9-stable/airflow/operators/docker_operator.py#L91)
Однако в стабильной версии 1.10 добавлена ​​среда для DockerOperator. https://github.com/apache/incubator-airflow/blob/v1-10-stable/airflow/operators/docker_operator.py#L103

person Chengzhi    schedule 31.07.2018
comment
См. новый ответ, описывающий, как расширить шаблонные поля. - person andscoop; 01.08.2018

Как упоминалось в другом постере, DockerOperator в Airflow 1.9 ожидает только шаблона поля command, но довольно просто изменить шаблонные поля в Operator.

from airflow.operators import DockerOperator
DockerOperator.template_fields = (command, environment)

И затем вы можете создать экземпляр своего оператора, как обычно.

person andscoop    schedule 01.08.2018
comment
Итак, вы бы просто добавили эту строку в начало DAG? Или это внутри функции? - person tobi6; 01.08.2018
comment
global в файле DAG - person andscoop; 01.08.2018

Быстрое обновление :)

Среда и параметры команды DockerOperator могут быть шаблонными. Я написал об этом статью: https://marclamberti.com/blog/how-to-use-dockeroperator-apache-airflow/

Кроме того, не стесняйтесь взглянуть на исходный код, чтобы увидеть, какой параметр может быть шаблонным, а какой нет: https://github.com/apache/airflow/blob/master/airflow/operators/docker_operator.py Хорошего дня.

person Marc Lamberti    schedule 17.04.2019