google-app-engine - 具有自动扩展 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 实例来关心任务是否完成......所以我不确定为什么建议最多比应用处理程序的超时多几秒钟......任何人都可以阐明对此?我错过了什么?为这些相对简单的任务添加一个计算引擎,这些任务最多需要我们几个人才能完成,这似乎是一个很大的开销,我不希望这决定我选择哪些扩展选项。
谢谢你的时间。
解决方案
该建议仅用于记录目的。如果你的任务超时时间比你的应用程序超时时间短,你永远不知道你的应用程序是否有错误,因为你没有返回。
如果您在 Cloud Task 上有更长的超时时间,您可以在 Cloud Task 日志中捕获和跟踪应用程序返回代码,从而优雅地跟踪错误。
具有基本缩放模式的 App Engine是一个很好的解决方案。
- 您每天有 9H 空闲(B 实例类型)
- App Engine 在一段时间不活动后自动缩放为 0(您可以在基本缩放:
idle_timeout
参数中定义) - 您有区域可用的服务。不是像计算引擎这样的区域,或者您需要 9 个计算引擎才能覆盖区域高可用性(每个区域 3 个,超过 3 个区域)
- 您无需管理服务器:无需更新、无需修补、无需网络/IP/防火墙规则……
如果您问我有关开销的问题,我会回答 Compute Engine 而不是 App Engine(即使您需要很少的配置)
推荐阅读
- typescript - 如何在运行时将联合限制为一种给定类型?
- python - 如何按列值重塑熊猫数据框?
- git - 如何在本地克隆的存储库上使用 git 在 bash / shell 中列出拉取请求标题、状态、日期
- claims-based-identity - 如何将 UserClaims 用于租户权限应用程序?
- python - Keras 无法下载任何东西
- imagemagick - Imagemagick创建图像并将图像放置在最大尺寸内
- jquery - 在 MVC SPA 中填充 JQuery 数据表
- python - 如何在 yubikey python 中对注册用户进行身份验证
- spring - Spring中的绑定结果将所有元数据而不是特定错误返回到匹配字段
- django - Django通过访问请求在信号中填充模型