Воздушный поток Python отчет о выходе - PullRequest
1 голос
/ 11 февраля 2020

Я знаю, yield используется для определения генераторов, заменяя возврат функции для предоставления результата ее вызывающей стороне, но что делают следующие операторы yield? Они не похожи на генераторы, а за доходностью следует возврат.

Код из файла: 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
...