BaseSensorOperator版的{1.1}版本1.10.6文档。
BaseSensorOperator继承自BaseOperator,文档指出timeout (int) – Time, in seconds before the task times out and fails
我不了解execution_timeout (datetime.timedelta) – max time allowed for the execution of this task instance, if it goes beyond it will raise and fail.
所提供的功能是timeout
。
我已经查看了每种用法的代码。他们似乎在情感上做着同样的事情,尽管我认为行为上存在意外的差异。我为此here提交了JIRA。可能是故意的,只是没有记录在案。
在文档中找不到execution_timeout
参数的原因,否则将不存在。也许只是记录不好?
答案 0 :(得分:0)
BaseSensorOperator
在内部实现了execute
,并根据poke
使用它来运行您的poke_interval
实现。 execute
的此实现利用timeout
属性来确定执行已运行了多长时间-以防您的poke
正在运行,但永远不会得出True
。>
execution_timeout
中的BaseOperator
对我来说有点神秘,我无法将其归结为任何具体用法。但是,作为思想实验,请考虑以下情况:您实现了一个传感器,而您的poke
实现中的某些操作则需要花很长时间甚至可能永远无法完成。例如:
def poke(...):
while True:
print("Wasting your time...")
由于每个戳中都存在此循环,因此单个戳的长度是无限的。因此,您永远不会真正检查您的timeout
,因为它只是poke
的一次调用。考虑到这一点,我猜想execution_timeout
在那里可以发现这样的问题并拔掉插头。我想肯定会确认。