重新计划模式下的气流传感器:在两次戳之间存储计数器状态的最佳实践?

时间:2019-04-10 23:11:39

标签: airflow

我想使用重新计划模式将指针之间的计数器状态存储在长时间运行的传感器中。

问题:

我希望将文件上传到GCS路径,但是在所有文件到达时都没有成功信号。作为一种启发式方法,如果经过n * grace_period分钟而没有更改带有该前缀的文件数,则我将认为上传会话结束。

方法:

我正在尝试实现自定义传感器以实现以下目的: -每n分钟拨一次,以查看GCS中带有特定前缀的文件数量,并将此值存储在num_files中。

  • 如果自上次戳后num_files开始没有变化,则增加一个计数器consecutive_same_pokes

  • 如果consecutive_same_pokes > grace_period and num_files > min_files成功。

  • 如果n * grace_period + 1分钟内未成功,则SLA会丢失。

  • 继续戳直到deadline,如果num_files > min_files则成功。 在这种情况下,deadline将在开始时间之后24小时,因此传感器需要重新计划模式。

核心问题:

num_filesconsecutive_same_pokes存储状态的最佳实践是什么?

  • 变量:似乎我们将过于频繁地更新此状态,并且仅从task_instance读取此传感器的状态。

  • XComms:我不确定是否可以将XComms用于任务内通信,因为它是用于任务间通信的。

  • 作为传感器的属性:如果存储在MyCustomSensor.num_filesMyCustomSensor.consecutive_same_pokes中,我不确定我的状态是否会在所有戳中保持不变。重新计划模式会导致我的任务在每次清除计数器时重新初始化,还是只是重新安排拨码?

1 个答案:

答案 0 :(得分:0)

也许是一个愚蠢的建议,但您不是在使用某种存储方式,而是在看当前时间与上次文件上传时间之间的区别吗?