具有持续超过 10 分钟的自动缩放 App Engine 的 Cloud Tasks

Cloud Tasks with an automatically scaling App Engine that last longer than 10 minutes

我有一个基于 App Engine 构建的 iOS 应用程序的后端,我希望执行可能很长的 运行ning 后台任务以将记录添加到我的云 SQL 数据库。如果没有 Compute Engine,这可能吗?我已经看到 Cloud Tasks 可以执行异步工作,您可以将 dispatchDeadline 设置为基本上任何您想要的,但我还阅读了文档

对于 App Engine 任务,0 表示请求具有默认截止日期。默认截止日期取决于服务的缩放类型:具有自动缩放功能的标准应用程序为 10 分钟,具有手动和基本缩放功能的标准应用程序为 24 小时,弹性应用程序为 60 分钟。如果设置了请求截止时间,则必须在[15秒,24小时15秒]区间内。无论任务的 dispatchDeadline 是什么,应用程序处理程序都不会 运行 超过服务的超时时间。 我们建议将 dispatchDeadline 设置为最多比应用程序处理程序的超时时间多几秒。有关详细信息,请参阅超时。

我不是特别需要 App Engine 实例来关心任务是否完成...所以我不确定为什么建议 最多比应用程序多几秒钟处理程序的超时 ...任何人都可以对此有所了解吗?我错过了什么?为这些相对简单的任务添加一个 Compute Engine 最多需要我们几个人才能完成,这看起来开销很大,我不希望这决定我选择的缩放选项。

感谢您的宝贵时间。

该建议仅用于记录目的。如果您的任务超时时间比您的应用超时时间短,您永远不知道您的应用程序是否有错误,因为您没有 return.

如果您的 Cloud Task 超时时间较长,您可以在 Cloud Task 日志中捕获并跟踪应用 return 代码,从而优雅地跟踪错误。

带有 basic scaling mode 的 App Engine 是一个很好的解决方案。

  1. 你有9H free per days (B instance type)
  2. App Engine 在一段时间不活动后自动缩放为 0(您可以在基本缩放中定义:idle_timeout 参数)
  3. 您有区域可用服务。不像计算引擎那样是区域性的,或者您需要有 9 个计算引擎来覆盖区域高可用性(每个区域 3 个,超过 3 个区域)
  4. 您没有要管理的服务器:没有更新,没有补丁,没有 network/ip/firewall 规则...

如果你问我开销,我会回答 Compute Engine 而不是 App Engine(即使你需要很少的配置)