我们的应用广泛依赖backend instances。有一些逻辑必须每隔几秒运行一次。此代码的执行不仅可以由到达前端的请求驱动,因为它需要无论如何都要运行。
我们只考虑使用task queues来解决此问题。但据我们所知,任务队列只保证任务将在24小时内执行。我没有找到支持这一点的参考文献。
我们的应用使用固定数量的resident B1后端实例。我们假设每个实例在部署并启动后端版本后24/7保持活动状态。
谢谢!
更新
App Engine会尝试无限期地保持后端运行。但是,目前没有保证后端的正常运行时间。
随着统计数据的出现,App Engine团队将提供有关预期后端正常运行时间的更多指导。
同样重要的是要认识到,在后端终止之前,关闭钩子并不总是能够运行。在极少数情况下,可能会发生中断,导致App Engine无法提供30秒的关机时间。
当App Engine需要关闭后端实例时,现有请求将在30秒后完成,新请求将立即返回404。
以下代码示例演示了一个基本的关闭挂钩:
LifecycleManager.getInstance().setShutdownHook(new ShutdownHook() {
public void shutdown() {
LifecycleManager.getInstance().interruptAllRequests();
}
});
答案 0 :(得分:2)
我只运行一个驻留(非动态)后端的一个实例,我的经验是每天重启至少一次。 您的应用程序必须能够存储其状态并在重新启动后恢复。