Я знаю, 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