谷歌应用引擎:没有用户数据的新实例

时间:2013-01-28 21:11:03

标签: java google-app-engine session google-api

当用户请求重定向到新实例时,我的google engine java app会丢失所有用户数据:

此请求导致您的应用程序启动了一个新进程,从而导致您的应用程序代码首次加载。因此,此请求可能需要更长时间并且使用的CPU比典型请求更多应用

因为这是非常不方便的行为我试图设置一个驻留实例所以我将“空闲实例”设置为1-1但这并没有解决我的问题我得到一个常驻实例和总是有一个新的(动态)实例创建,它提供了一些请求......(这个人有同样的问题:Why GAE launched a second instance with Max Idle Instances set to 1

我根本不想使用动态实例(我的应用总是低负载,而不是很多用户)。我只需要为用户提供一个驻留实例。是否有可能在GAE中设置?如果没有,是否有任何方便且可靠的方式如何在页面之间保存数据(例如将它们存储在数据存储中?)。我在页面之间传递了很多POST参数。

1 个答案:

答案 0 :(得分:1)

Google App Engine是一个云平台。没有动态实例,您的应用程序设计将无法获得云平台的所有好处。

要解决数据传输问题,您可以使用以下方法之一:

  1. 使用标准Java EE会话对象。会话存储在数据存储区中,因此您不会将其丢失。但是,由于DataStore实体大小限制,您不应忘记您的会话对象应该是SERIALIZABLE且少于1MB。

  2. 手动将数据存储在DataStore中,并在页面之间传输实体ID。适用相同的1MB实体大小限制。

  3. 使用BlobStore或云存储将您的数据存储为文件,并在页面之间传输文件标识符。它将有助于消除1Mb限制。

  4. 任何此方法都允许在请求之间保留数据,但有其自身的局限性。您需要提供您的要求的详细信息才能得到明确的答案。