如何在云函数触发器中调度任务然后停止它?

问题描述 投票:0回答:1

基本上,我正在开发一个系统,其中一些用户(调度员)可以创建呼叫,然后其他用户(志愿者)可以响应这些呼叫。

每个呼叫的状态可以是打开(默认)、覆盖(由志愿者完成)、关闭(也由志愿者完成)。

现在我需要做的是每当创建呼叫(其状态为打开)时,我想安排一个函数每 2 分钟发送一次通知,直到其状态更改为已覆盖。

我尝试在 firebase 云函数中使用 setInterval() ,但我在某处读到,不可能使云函数保持活动状态超过 9 分钟,而且我还面临着一些问题,一旦覆盖调用就取消计时器。

现在我发现云任务对我来说很有用,但我不明白如何在创建呼叫后启动它,然后在呼叫覆盖后取消它。

我在 firebase 数据库中工作过很多次,但云函数对我来说是新事物,所以我对此还算初学者:(

firebase google-cloud-platform google-cloud-firestore google-cloud-functions
1个回答
0
投票

没有什么神奇的服务可以提供一段时间的通知然后停止。要实现这种模式,你必须自己构建它。

你可以想象2种实现方式:

  • 调度程序
  • 任务

对于调度程序选项,您可以在创建呼叫时创建调度程序。将频率设置为 2 分钟 (

*/2 * * * *
)。

被调用端点检查通话状态:

  • 如果被覆盖,删除调度器配置
  • 如果没有,请进行通知

问题是:我不知道调度程序是否有配额。如果您使用 Cloud Scheduler,我知道至少会产生相关成本。就我个人而言,这不是我的首选


如果您使用任务选项(我的首选选项),您可以在创建呼叫后 2 分钟后创建第一个任务。

被调用端点检查通话状态:

  • 如果被覆盖,则不执行任何操作
  • 如果没有,则进行通知,并在未来2分钟内创建新任务。
© www.soinside.com 2019 - 2024. All rights reserved.