根据代码是在前端实例还是后端实例上运行,GAE 允许不同的限制。例如,它允许您在后端启动长时间运行的后台线程,而如果代码在前端实例上运行,这将超时并引发运行时异常。
我对如何设计应用程序感到非常困惑,以便您知道只有某些代码在后端实例(而不是前端实例)上执行。
我对 GAE 工作原理的理解是,您上传您的应用程序(WAR 文件)并根据需要或直到超过您定义的上限(用于预算等)扩展(创建集群实例)该应用程序。
但除非我弄错了,否则它不允许您为同一个应用程序上传不同的模块(多个 WAR),因此在前端实例上运行 1 个 WAR,在后端实例上运行另一个 WAR(以保证你只在后端运行后台线程!)。
所以我的问题是:您如何开发、打包和部署 GAE 应用程序,以便始终在正确的实例上执行正确的代码?与此相切的问题是如何指定在特定后端运行不同的长时间运行的作业。例如,如果您有一个后台线程应该在午夜运行,但您有 10 个后端,这是否意味着您每晚都会在所有 10 个实例上启动相同的后台线程?显然,在某些情况下,您只希望 1 个后端运行作业,而其他情况下每个后端的行为应该相同。
再一次,这一切都回到了:你如何确保正确的代码在正确的实例上部署和执行?提前致谢!