templates - 我怎样才能得到dag中的execution_date?运算符的外部?

标签 templates parameters jinja2 operator-keyword airflow

如何在 dag 外部获取 execution_date 参数?

execution_min = "{{execution_date.strftime('%M') }}"

if execution_min == '00':
    logging.info('**** ' + "YES, It's 00")
    final_task = DummyOperator(
        task_id='task_y00',
        ...
        dag=dag
    )
else:
    logging.info('**** ' + "NOPE!!!")
    final_task = DummyOperator(
        task_id='task_n00',
        ...
        dag=dag
    )

我想使用 execution_date 动态设置任务流(尤其是分钟)

但是 Jinja 模板无法与 template_fields = ['execution_date'] 一起使用

是否有任何解决方案可以从运算符外部(= DAG 本身)获取执行参数???

最佳答案

执行日期特定于 DagRun。 DagRun 信息在 DAG 定义文件中不可用(它在 Operator 的模板字段中可用,因为这些信息在运行时通过 Jinja 进行解析)。即使 DAG 未运行,调度程序、Web 服务器和工作人员也会频繁解析 DAG 定义文件。这就是为什么在实际的 DagRun 之外无法访问执行日期等内容。

此外,无法向运行时运行的 DAG 添加/删除任务。您可以拥有动态 dags,其结构在运行之前就已决定(即将文件解析为 DAG 结构),但您无法添加任务或决定 DAG 在运行时的外观。

关于templates - 我怎样才能得到dag中的execution_date?运算符的外部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46808531/

相关文章:

C++ 如何从一个模板类转换为另一个模板类?

wpf - 你能在数据绑定(bind)的 WPF 样式中执行 "math"吗

MySQL ALTER TABLE 在存储过程中带有参数

ansible - 如何获得以逗号分隔的名字列表?

python - Jinja 在 HTML 中呈现文本并保留换行符

c++ - 在 C++03 中将指针模板和指向成员函数的指针作为模板参数

c# - 添加了 OracleCommand 参数但抛出异常

javascript - 通过高阶函数传递参数

python - Pelican 插件 - 如何添加上下文变量?

c++ - 如何在具有迭代器的 STL 容器上模板化函数