首页 > 解决方案 > 具有自动扩展 App Engine 的 Cloud Tasks,持续时间超过 10 分钟

问题描述

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

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

我并不特别需要 App Engine 实例来关心任务是否完成......所以我不确定为什么建议最多比应用处理程序的超时多几秒钟......任何人都可以阐明对此?我错过了什么?为这些相对简单的任务添加一个计算引擎,这些任务最多需要我们几个人才能完成,这似乎是一个很大的开销,我不希望这决定我选择哪些扩展选项。

谢谢你的时间。

标签: google-app-enginegoogle-cloud-platformgoogle-cloud-tasks

解决方案


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

如果您在 Cloud Task 上有更长的超时时间,您可以在 Cloud Task 日志中捕获和跟踪应用程序返回代码,从而优雅地跟踪错误。

具有基本缩放模式的 App Engine是一个很好的解决方案。

  1. 每天有 9H 空闲(B 实例类型)
  2. App Engine 在一段时间不活动后自动缩放为 0(您可以在基本缩放:idle_timeout参数中定义)
  3. 您有区域可用的服务。不是像计算引擎这样的区域,或者您需要 9 个计算引擎才能覆盖区域高可用性(每个区域 3 个,超过 3 个区域)
  4. 您无需管理服务器:无需更新、无需修补、无需网络/IP/防火墙规则……

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


推荐阅读