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

Need to access schedule time in DockerOperator in Airflow

需要在 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 环境。

第一个宏只有在 template_fields 时才有效。其次,您需要检查您使用的是哪个版本的气流,如果您使用的是 1.9 或以下版本,它可能不适用于评论中提到的 @tobi6 的 DockerOperator,因为 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

正如其他发帖人所提到的,Airflow 1.9 中的 DockerOperator 只期望 command 字段被模板化,但修改 Operator 上的可模板化字段是相当微不足道的。

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

然后您可以像往常一样实例化您的运算符。

快速更新 :)

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

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