首页 > 解决方案 > Google Cloud 功能中更精确和更高频率的调度 / Cloud Scheduler

问题描述

XX:XX:00 XX:XX:15 XX:XX:30我希望在服务器时钟以 15 秒间隔即在和时精确地每 15 秒调用一次云函数XX:XX:45。我尝试使用云调度程序,但遇到以下问题:

  1. 使用 unix-cron 的最高频率是每分钟。此外 using* * * * *似乎并不能保证事件将在 发生XX:XX:00,而是从我开始任务开始的每一分钟发生。

  2. 我的云功能仍然可以通过一个post调用来调用,这可能真的会打乱我的时钟。我对此的临时解决方案是将像 SH256 这样的非常长的哈希放入标头中,并要求它运行云功能。这会使事情变慢很多,最初我想使用 RSA 或 ECC,但我认为这会使事情变得更慢,所以现在我只有一个字符串与一个长 SH256 字符串进行比较。我希望有一个更好/更有效的方法来解决这个问题。

  3. 前面提到的调度问题XX:XX:00 XX:XX:15 XX:XX:30也是XX:XX:45一个真正的痛苦。我发现的最佳解决方案是调用一次该函数,然后休眠并尝试同步到这些时间。这充其量是晚餐 janky / hacky。

或许 Google Cloud 平台内还有其他服务更适合此特定用例?或者另一种方法?

标签: google-cloud-platformgoogle-cloud-functions

解决方案


当我需要比使用Cloud Task的一分钟更高的频率时,请执行以下操作:

  • 创建一个每分钟触发我的功能的 Cloud Scheduler 1. 我在此调度程序上设置了重试策略
  • 函数 1 在下一分钟创建接下来要运行的 4 个任务(例如,函数在 00:00:00 触发,它为 00:01:00、00:01:15、00 创建任务: 01:30、00:01:45)。云任务可以创建延迟任务
  • 任务触发功能2
  • 功能 2 执行业务逻辑

推荐阅读