【问题标题】:Executing cloud functions after n seconds on demand按需在 n 秒后执行云功能
【发布时间】:2019-09-30 13:31:10
【问题描述】:

我正在开发一个应用程序,我必须向用户发送有关某些工作的通知,并且用户必须在 1 分钟内接受该工作,如果他不接受,则应将工作请求发送给下一个用户。

我使用 firestore 作为数据库。当我创建作业时,触发器将向分配的用户发送通知。现在我必须等待 60 秒以确认用户是否已接受该作业并开始该过程,如果没有,我必须将该作业分配给新用户。

我不确定如何创建这样的程序,其中云功能在延迟后执行。

示例: 第一次执行将由触发器完成,60秒后将命令第二次执行。第二次执行检查作业是否被接受,如果接受则终止并要求不延迟执行,如果作业未被接受,它将重复第一次执行的过程,并在60秒后请求第三次执行。

谷歌云中有哪些可用资源来实现这一目标?

谢谢

【问题讨论】:

  • 没有内置提供程序/支持延迟执行云函数调用。您可以通过以下方式完成类似的操作:1)将任务及其超时存储在数据库中,2)using a scheduled trigger 每分钟左右运行一次代码,3)检查自上次以来哪些任务已过期。
  • 这就是我现在正在做的事情,但我认为它的可扩展性不是很高,因为工作列表会不断扩大,用户列表也会如此。每分钟处理所有这些任务的单个作业可能会导致延迟。在下一次执行开始之前,最后执行的作业将有更少的时间来接受,或者最坏的情况是,它可能无法在 60 秒内完成执行,并且循环器可能会重叠。

标签: firebase google-cloud-functions google-cloud-pubsub


【解决方案1】:

您可以使用Cloud Tasks 安排延迟回调云函数。

【讨论】:

  • 没用过,但是可以在队列中添加任务延迟执行吗?如果是这样,我会试一试。 :)
  • 是的,有可能。
  • 事情似乎处于测试阶段,文档很难遵循,但最终可以正常工作。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-10
  • 2019-10-22
  • 2019-12-23
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多