Google App Engine:预热/加载请求并始终开启

Ban*_*der 7 java google-app-engine

一个预热请求的理解是,它是一个请求"准备"一个新的前端/后端实例(或者它们只适用于前端?),以准备在不久的将来某个时候使用它.

加载请求的理解是,它是一个启动新实例的请求,因为它现在是需要的.因此,提前尝试"预热"实例,以使加载延迟更少,这是理所当然的.

所以我的第一个问题是:我对这些请求类型的理解是否正确,如果没有(或者如果我在这里缺少任何值得注意的东西),那么请先澄清/纠正我!

接下来我很好奇:你如何让你的GAE服务器端代码"处理"预热或加载请求?是否存在我需要实现的特定接口(在Java EE领域,您需要实现ServiceContextListenerweb/app容器在部署/启动应用程序时查找和调用的实现).如果是这样,这样做的API是什么?否则,GAE应用程序的"切入点"是什么?基本上我想知道什么类/方法应该处理预热/加载请求.

最后,我问:在处理预热请求和加载请求之间的启动过程中,哪些(一般)活动应该是不同的?他们不一样吗?我问,因为我对使用GAE的"Always On"高级功能很感兴趣,并且不确定我应该将启动代码放在哪些实例上.

Dav*_*ith 7

预热请求是一种让实例准备好处理流量的方法,这样您的用户就不必等待Java或Python应用程序加载其所有导入,然后执行任何特定于实例的初始化(包括缓存预热)它需要做.预热请求适用于前端和后端.

有关如何执行此操作的详细信息取决于语言,但基本上您需要一个处理程序来处理请求,/_ah/warmup而不是500响应.有关详情,Google会针对"App引擎热身请求"并选择合适的结果.默认情况下,为Java启用预热请求,但对于Python,您必须在您的启用中启用它们app.yaml.我还没有尝试过Go.

据我所知,"加载请求"只是一个实例必须处理的第一个请求的名称.https://developers.google.com/appengine/kb/java#What_Is_A_Loading_Request有一些细节.