Я немного не понимаю, как работают параметры BaseSensorOperator
: timeout
& poke_interval
. Рассмотрим такое использование датчика:
BaseSensorOperator(
soft_fail=True,
poke_interval = 4*60*60, # Poke every 4 hours
timeout = 12*60*60, # Timeout after 12 hours
)
В документации упоминается, что тайм-аут устанавливает для задачи «сбой» после ее завершения. Но я использую soft_fail=True
, я не думаю, что он сохраняет такое же поведение, потому что я обнаружил, что задача не выполнена, вместо того, чтобы пропустить после того, как я использовал оба параметра soft_fail
и timeout
.
Так что же здесь происходит?
- Сенсор тыкает каждые 4 часа, и при каждом тычке будет ждать длительность таймаута (12 часов)?
- Или тыкает каждые 4 часа, итого 3 тыкает, потом таймаут?
- Кроме того, что произойдет с этими параметрами, если я использую mode = reschedule?
Вот документация по BaseSensorOperator
class BaseSensorOperator(BaseOperator, SkipMixin):
"""
Sensor operators are derived from this class and inherit these attributes.
Sensor operators keep executing at a time interval and succeed when
a criteria is met and fail if and when they time out.
:param soft_fail: Set to true to mark the task as SKIPPED on failure
:type soft_fail: bool
:param poke_interval: Time in seconds that the job should wait in
between each tries
:type poke_interval: int
:param timeout: Time, in seconds before the task times out and fails.
:type timeout: int
:param mode: How the sensor operates.
Options are: ``{ poke | reschedule }``, default is ``poke``.
When set to ``poke`` the sensor is taking up a worker slot for its
whole execution time and sleeps between pokes. Use this mode if the
expected runtime of the sensor is short or if a short poke interval
is requried.
When set to ``reschedule`` the sensor task frees the worker slot when
the criteria is not yet met and it's rescheduled at a later time. Use
this mode if the expected time until the criteria is met is. The poke
inteval should be more than one minute to prevent too much load on
the scheduler.
:type mode: str
"""