def test_retry_period_finished(self): """ Task instance's that have had their retry period elapse should pass this dep """ ti = self._get_task_instance(State.UP_FOR_RETRY, end_date=datetime(2016, 1, 1)) assert not ti.is_premature assert NotInRetryPeriodDep().is_met(ti=ti)
def test_still_in_retry_period(self): """ Task instances that are in their retry period should fail this dep """ ti = self._get_task_instance(State.UP_FOR_RETRY, end_date=datetime(2016, 1, 1, 15, 30)) assert ti.is_premature assert not NotInRetryPeriodDep().is_met(ti=ti)
def test_not_in_retry_period(self): """ Task instance's that are not up for retry can not be in their retry period """ dag = FakeDag() task = FakeTask(dag=dag) ti = FakeTI(task=task, state=State.SUCCESS) self.assertTrue(NotInRetryPeriodDep().is_met(ti=ti, dep_context=None))
def deps(self): """ Returns the list of dependencies for the operator. These differ from execution context dependencies in that they are specific to tasks and can be extended/overridden by subclasses. """ return { NotInRetryPeriodDep(), PrevDagrunDep(), TriggerRuleDep(), }
def test_retry_period_finished(self): """ Task instance's that have had their retry period elapse should pass this dep """ dag = FakeDag() task = FakeTask(dag=dag, retry_delay=timedelta(minutes=1)) ti = FakeTI( task=task, state=State.UP_FOR_RETRY, end_date=datetime(2016, 1, 1), is_premature=False) self.assertTrue(NotInRetryPeriodDep().is_met(ti=ti, dep_context=None))
def test_still_in_retry_period(self): """ Task instances that are in their retry period should fail this dep """ dag = FakeDag() task = FakeTask(dag=dag, retry_delay=timedelta(minutes=1)) ti = FakeTI( task=task, state=State.UP_FOR_RETRY, end_date=datetime(2016, 1, 1), is_premature=True) self.assertFalse(NotInRetryPeriodDep().is_met(ti=ti, dep_context=None))
def deps(self): """ Returns the list of dependencies for the operator. These differ from execution context dependencies in that they are specific to tasks and can be extended/overridden by subclasses. """ return { # 验证重试时间: 任务实例已经标记为重试,但是还没有到下一次重试时间,如果运行就会失败 NotInRetryPeriodDep(), # 验证任务实例是否依赖上一个周期的任务实例 PrevDagrunDep(), # 验证上游依赖任务 TriggerRuleDep(), }
def deps(self): """ Returns the list of dependencies for the operator. These differ from execution context dependencies in that they are specific to tasks and can be extended/overridden by subclasses. """ from airflow.ti_deps.deps.not_in_retry_period_dep import NotInRetryPeriodDep from airflow.ti_deps.deps.prev_dagrun_dep import PrevDagrunDep try: from dbnd_airflow.dbnd_task_executor.optimized_trigger_rule_dep import ( TriggerRuleDepOptimizied as TriggerRuleDep, ) except Exception: from airflow.ti_deps.deps.trigger_rule_dep import TriggerRuleDep return { NotInRetryPeriodDep(), PrevDagrunDep(), TriggerRuleDep(), # PATCH: We replace TriggerRuleDep with TriggerRuleDepOptimizied }
def test_not_in_retry_period(self): """ Task instance's that are not up for retry can not be in their retry period """ ti = self._get_task_instance(State.SUCCESS) self.assertTrue(NotInRetryPeriodDep().is_met(ti=ti))