稍后执行计划任务的最佳解决方案是什么?

What's the best solution to execute scheduled tasks for later?

这不是真正的代码相关问题,而是更多面向解决方案的问题。

为了提供一些上下文,我有一个带有无服务器 Node.js 后端的 Web 应用程序,它允许用户定义端点将执行并执行某些操作的重复时间段。例如,用户决定每 9 天触发一次操作。

我很清楚 GCP Cloud Tasks(这是我目前正在使用的)和 AWS SQS 等解决方案,但他们有限制。例如,GCP 的 Cloud Tasks 的最大计划限制为 720 小时(30 天)。这意味着我的用户只能在未来 720 小时内安排任务,而我更愿意让他们灵活地安排最多一年的任务。

目前是否有允许我执行此类功能的云解决方案?

我怀疑这绝对是可能的,因为 Stripe 的订阅。他们允许年度订阅,这与我正在使用的类似,但有一个扩展的限制。我不确定 Stripe 工程师是如何在幕后实现这一目标的(同时保持可扩展性作为一项要求,因为 cronjobs 非常昂贵),但在谷歌搜索解决方案无济于事之后,这个问题让我想知道是否存在更合适的解决方案或者是否存在我的解决方案很好。

我也知道有一些变通方法可以“延长”Cloud Task 720 小时的限制,但我想在深入研究这些变通方法之前探索各种选择。 (例如,每个用户的 Cronjobs 会工作得很好,但在规模上很昂贵,一个 cronjob 检查当天所有任务的计划,但在规模上,云功能可能会超时,因为我使用的是无服务器后端等)

你应该看看 cloud Workflow。对于每个用户请求,使用参数启动执行,它们可以是“延迟”或“url 调用”;定义您需要的那些。

所以,当一个执行开始时,等待延迟,然后调用URL。一次执行最多可以持续 1 year,符合您的要求