Вам понадобится собственный пользовательский оператор или датчик и используйте атрибут start_date
экземпляра задачи. Использование start_date
- единственное изменение, которое вам нужно сделать из TimeDeltaSensor
в библиотеке.
Если вы скопируете исходный код TimeDeltaSensor, вы можете переопределить метод poke примерно таким:
# ...
target_dttm = context["task_instance"].start_date
target_dttm += self.delta
return timezone.utcnow() > target_dttm
Добавлено
Читая ваш вопрос еще раз, я вижу, что вам может просто понадобиться оператор со сном при его выполнении. Или вызываемый python, в котором есть шаблон сна, и pu sh, который через PythonOperator ... что-то вроде
def hit_api():
pass
def hit_and_back_off:
while True:
try:
hit_api()
except APILimitError:
sleep(<SOME SLEEP>)
except e:
raise