【发布时间】:2020-03-07 18:50:02
【问题描述】:
我有一个简单的 python 运算符,定义如下:
loop_records = PythonOperator(
task_id = 'loop_records',
provide_context = True,
python_callable = loop_topic_records,
dag = dag
)
这个python操作符调用loop_topic_records,定义如下:
def loop_topic_records(**context):
parent_dag = context['dag']
for i in range(3):
op = DummyOperator(
task_id="child_" + str(i),
dag=parent_dag
)
logging.info('Child operator ' + str(i))
loop_records >> op
我看到代码没有引发任何错误。它甚至在日志中打印Child operator 0..2。但是,在 dag Graph view 中我没有看到子运算符,我只看到 loop_records 节点,好像我的 dag 只包含一个运算符。那么,这有什么问题呢?我该如何解决?
【问题讨论】:
-
我刚刚在 operatorm 上创建了它必须失败(我只是将这样的逻辑放入此运算符)。但是,当我运行整个 dag 时,它运行成功。因此,这意味着以这种方式调用的嵌套子运算符永远不会运行