如何在多个googleappengine实例中保持全局变量的持久性?

2024-10-01 13:34:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我们的情况如下: 我们正在进行一个学校项目,目的是让多个团队在一个城市里用智能手机走来走去,边走边玩城市游戏。 因此,我们可以让10个活跃的智能手机在城市里走动,所有人都会发布他们的位置,并从谷歌appengine请求数据。在

有人在一个网络浏览器后面,看着所有的团队四处走动,给他们发信息等等

我们使用googleappengine提供的数据存储来存储这些团队发送和请求的所有数据,存储消息并检索它们等等。 然而,我们很快就发现我们的最大读写限制在哪里,所以我们寻找了一个解决方案,能够检索定期更新(这花费了最大的读写成本),而不使用任何谷歌提供的有限资源。显然,因为这是一个学校项目,我们不想为更多的阅读和写作付费。在

将这些信息存储在全局变量中似乎是一个简单而快速的解决方案,它是。。。但是当我们开始真正的测试时,我们发现我们的一些数据丢失了,然后又重新出现了。事实证明,这是因为有太多的请求被发送到云端,以至于产生了一个新的实例,而实例并没有保持这些全局变量的持久性。在

所以我们的问题是: 我们是否可以确保这些全局变量在googleappengine的每个运行实例上都是相同的。 或者 我们是否可以限制每次运行的实例数量,不管对“1”执行多少个请求。 或者 是否有其他方法可以更好地存储这些数据,而不使用数据存储和全局变量。在


Tags: 数据项目实例目的信息游戏情况解决方案
3条回答

有趣的问题。首先,我不认为有更好的方法来存储数据;不,你不能阻止新实例的产生,不,你不能使不同的实例总是有相同的数据。在

你可以做的是让实例与数据存储中的主记录周向同步,通过智能地选择频率并一次性下载/上传信息,你可以将读/写次数限制在适合你的水平上。不过,这是在克鲁奇的地盘上。在

尽管我找到了其他所有东西的配额,但我找不到免费读/写的限制,所以它们可能非常小,但你用10部智能手机就可以达到这个目标,这一事实给我带来了一个危险信号。你确定智能手机被调查(或来电)的频率合理吗?听起来你可能在不必要地敲打他们。在

你应该使用memcache。如果使用ndb(新数据库)库,则可以自动缓存查询结果。显然,这并不能提高你的写作能力,但它可以显著提高你的阅读量。在

您需要用数据存储来支持它,因为数据可以随时从memcache中弹出。如果您愿意冒丢失更新的(小)机会,您可以使用memcache。您可以做一些类似的事情,比如只在数据存储中存储一个消息ID,并让控制器定期验证每个消息ID在memcache中都有对应的条目。如果其中一个丢失,控制器需要重新输入。在

考虑对等机之间通信的jabber协议。它的免费限制是相当高的水平。在

相关问题 更多 >