2010-04-16 48 views
1

我正在寻找一种方法来保持应用程序引擎(python)中的持久全局变量的等价物。我在做的是创建一个全局类型,我初始化一次(即当我测试时重置所有数据库对象)。我有像全球计数器那样的东西,或者是下一个ID来指定我创建的某些种类。谷歌应用程序引擎持久性全局

这是一个体面的方式来做这种事情或通常有另一种方法是使用?

+0

您可以使用一个表来存储您需要的每个全局变量的键值对吗? – bakkal 2010-04-16 01:25:59

+0

确实需要“为我创建的某些种类创建下一个ID”吗?如果在同一时刻创建2个实例,会发生什么情况,您是否与共享相同ID的2个实体发生冲突?你可以使用数据存储对象自己的ID:object.key()。id() – Emilien 2010-04-19 11:20:25

回答

5

数据存储是唯一可以保证的地方-也是可修改的持续数据。因此,您可以拥有一个大对象或多个较小的对象(具有name属性和其他属性),具体取决于您所需的访问模式 - 但必须位于数据存储中。您可以使用memcache来获得更快的缓存,通常会在整个查询中持续存在,但任何memcache条目都可能随时消失,因此您将始终需要它获得数据存储的支持(特别是,任何更改都必须转到数据存储,不是只是到memcache)。

+0

好的,很好的回应。这听起来像创建某种类型的方法,我创建一个实例并在需要时访问是实现方式(除非我不正确地理解响应)。谢谢! – Joey 2010-04-16 01:43:22

+0

@Joey,除非你需要在你的访问中更具选择性,一个实例的方法是可行的(如果两个不同的查询可以同时修改实例,那么要小心:当然,任何修改都需要一个重新读取的事务,更改和存储,否则这些更改可能会互相影响)。 – 2010-04-16 01:49:35