需要在Airflow中的DockerOperator中访问计划时间

时间:2018-07-31 08:02:53

标签: python docker airflow airflow-scheduler

需要在airflow的docker操作员中访问计划时间。例如

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()}}"})

基本上,我需要在docker环境中填充计划时间。

3 个答案:

答案 0 :(得分:2)

只有第一个宏是template_fields时才起作用。其次,您需要检查使用的是哪个版本的气流,如果使用的是1.9或更低版本,则它可能不适用于DockerOperator,注释中提到了@ tobi6,因为template_fields仅包含命令({{3 })
但是,那里有DockerOperator的1.10稳定添加环境。 https://github.com/apache/incubator-airflow/blob/v1-9-stable/airflow/operators/docker_operator.py#L91

答案 1 :(得分:2)

正如其他张贴者所提到的那样,Airflow 1.9中的DockerOperator仅期望将command字段进行模板化,但是修改操作员上的可模板化字段相当简单。

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

然后您可以像往常一样实例化操作符。

答案 2 :(得分:0)

快速更新:)

可以对DockerOperator的环境和命令参数进行模板化。 我写了一篇文章:https://marclamberti.com/blog/how-to-use-dockeroperator-apache-airflow/

此外,请不要犹豫地查看源代码,以了解哪些参数可以模板化:https://github.com/apache/airflow/blob/master/airflow/operators/docker_operator.py 祝你有美好的一天