首页 > 解决方案 > 气流 Python 产量声明

问题描述

我知道yield用于定义生成器,替换函数的返回以向其调用者提供结果,但是下面的 yield 语句是做什么的?它们看起来不像生成器,yield 后面也跟着 return。

代码来自文件:airflow/ti_deps/deps/task_concurrency_dep.py

class TaskConcurrencyDep(BaseTIDep):
    """
    This restricts the number of running task instances for a particular task.
    """
    NAME = "Task Concurrency"
    IGNOREABLE = True
    IS_TASK_DEP = True

    @provide_session
    def _get_dep_statuses(self, ti, session, dep_context):
        if ti.task.task_concurrency is None:
            yield self._passing_status(reason="Task concurrency is not set.")
            return

        if ti.get_num_running_task_instances(session) >= ti.task.task_concurrency:
            yield self._failing_status(reason="The max task concurrency "
                                              "has been reached.")
            return
        else:
            yield self._passing_status(reason="The max task concurrency "
                                              "has not been reached.")
            return

标签: pythonairflow

解决方案


推荐阅读