云任务条件执行

Raj*_*ary 5 google-cloud-platform google-cloud-functions google-cloud-tasks

我正在使用云任务。仅当任务 A 和任务 B 成功完成时,我才需要触发任务 C 的执行。所以我需要某种方式来读取/通知触发的任务的状态。但我在 GCP 的文档中看不到这样做的方法。使用 Node.js SDK 创建任务并使用 Cloud Functions 作为任务处理程序(如果有帮助的话)。

编辑:

根据要求,以下是有关我们正在做的事情的更多信息:

任务 1 - 10 每个发出 HTTP 请求、获取数据、根据此数据更新 Firestore 中的各个集合。这 10 个任务可以并行运行,并且没有特定的顺序,因为它们彼此之间没有任何依赖性。所有这些任务实际上都是在 GCF 内部实现的。

任务 11 实际上依赖于任务 1 - 10 更新的 Firestore 收集数据。因此它只能在任务 1 - 10 成功完成后才能运行。

我们确实发布 RunID 作为通用标识符来对所有任务 (1 - 11) 的特定运行进行分组。

gui*_*ere 4

云任务仅触发任务,只能定义时间条件。当任务 C 运行时,您必须手动编写检查代码。

这里是一个过程的例子:

  • 任务A正在运行,最后写入firestore的任务完成
  • 任务B正在运行,最后写入firestore的任务完成
  • 任务C启动并检查Firestore中A和B是否完成。
    • 如果不是,任务会错误退出
    • 是,继续该过程

您必须自定义 C 任务队列,以便在出现错误时重试任务。

另一种昂贵的解决方案是使用 Cloud Composer 来处理此工作流程

目前还没有其他关于工作流管理的解决方案。

  • 如果使用此方法,您可以从 Cloud Firestore“onWrite”侦听器触发任务 C,该侦听器侦听任务 A 和 B 写入的位置。“检查”函数将为每对运行两次(第一次是当只有 A 或 B 完成时,第二次是当两个中的最后一个完成时 - 触发任务 C)。如果任务 A 和 B 具有“作业 ID”的概念,则可以写入同一文档“/async/job10”并使用“onUpdate”侦听器,该侦听器仅在文档被运行时间较长的任务更改时才会触发。 (2认同)