google-cloud-platform - Google Cloud 功能中更精确和更高频率的调度 / Cloud Scheduler
问题描述
XX:XX:00
XX:XX:15
XX:XX:30
我希望在服务器时钟以 15 秒间隔即在和时精确地每 15 秒调用一次云函数XX:XX:45
。我尝试使用云调度程序,但遇到以下问题:
使用 unix-cron 的最高频率是每分钟。此外 using
* * * * *
似乎并不能保证事件将在 发生XX:XX:00
,而是从我开始任务开始的每一分钟发生。我的云功能仍然可以通过一个
post
调用来调用,这可能真的会打乱我的时钟。我对此的临时解决方案是将像 SH256 这样的非常长的哈希放入标头中,并要求它运行云功能。这会使事情变慢很多,最初我想使用 RSA 或 ECC,但我认为这会使事情变得更慢,所以现在我只有一个字符串与一个长 SH256 字符串进行比较。我希望有一个更好/更有效的方法来解决这个问题。前面提到的调度问题
XX:XX:00
XX:XX:15
XX:XX:30
也是XX:XX:45
一个真正的痛苦。我发现的最佳解决方案是调用一次该函数,然后休眠并尝试同步到这些时间。这充其量是晚餐 janky / hacky。
或许 Google Cloud 平台内还有其他服务更适合此特定用例?或者另一种方法?
解决方案
当我需要比使用Cloud Task的一分钟更高的频率时,请执行以下操作:
- 创建一个每分钟触发我的功能的 Cloud Scheduler 1. 我在此调度程序上设置了重试策略
- 函数 1 在下一分钟创建接下来要运行的 4 个任务(例如,函数在 00:00:00 触发,它为 00:01:00、00:01:15、00 创建任务: 01:30、00:01:45)。云任务可以创建延迟任务
- 任务触发功能2
- 功能 2 执行业务逻辑
推荐阅读
- java - 由于 EXCEPTION_ACCESS_VIOLATION (0xc0000005) 导致的线程 ConcurrentGCThread 导致 JVM 崩溃
- android - 在 Azure DevOps 中共享版本信息
- python - 给定一棵树 T = (V, E),找到从顶点 v 到顶点 w 的直接路径
- twig - (Twig)如何检查从翻译键获取的值(作为字符串或数组?)是否存在于产品变体标题中
- javascript - 用于删除过期日期的 JavaScript 算法?
- javascript - ReferenceError:图像未定义
- javascript - 如何遍历我的数组,以便在我的按钮元素中写出数组中的每个值?
- javascript - Postgresql 在 node.js 中不起作用。“要求('pg')”返回错误
- r - 是否有任何选项可以进行列拆分?
- java - 在 java 11 上的 SSL 通信期间发生 SocketException 时,如何使用 DefaultHttpRequestRetryHandler(HTTPClient) 重试?