在 Prefect 核心中,如果上游任务的输入发生变化,是否有一种简单的方法可以使缓存失效?

In Prefect core is there a simple way to invalidate cache if input of upstream tasks change?

我正在尝试构建一种机制,以便在上游任务常量输入发生变化时使任务的缓存失效。

我目前对每个任务的输入常量进行哈希处理,然后将其用作目标。我在想我可以改为构建当前任务输入的哈希值以及上游任务的输入的哈希值。正在考虑通过使用 Flow 对象的常量和边来做到这一点。

这似乎是一个很常见的问题,正在寻找是否真的有一种简单的方法来实现它?

最后,我调整了我现有的解决方案,它使用 xxhash 为每个任务制作常量的哈希值。

在进行更改之前,我的每项任务目标看起来像这样:

'{task_name}_{hash_of_input_constants}'

解决方法其实很简单,我只是简单地为直连的上游任务附加了输入常量的散列,所以当只有一个直连的上游任务目标时,目标将是这样的:

'{task_name}_{hash_of_input_constants_curent_task}_{hash_of_input_constants_directly_connected_upstream}'

如果上游输入发生变化,这将使缓存失效。