GAE下周开始支持IPv6

标签:Google App Engine

刚在Google App Engine Blog看到的消息,GAE从下周起开始支持IPv6。

os.environ["REMOTE_ADDR"]将可能获得一个IPv6的地址,因此如果你的代码不兼容的话,可能需要改动。当然,如果你的代码不依赖IP地址,那么就可以完全忽略这点。

不索引Expando的动态属性

标签:Google App Engine, Python

Expando相比Model来说,多了个动态属性。为了少定义一些模型类,也许用动态属性比较方便,但这又牵扯到一个性能问题:动态属性无法像静态属性一样设置indexed=False。
对我的应用而言,大多数的静态属性是需要索引的,而动态属性则不需要,这便造成了浪费。

在GAE论坛提了半天也没等到好的解决办法,于是自己翻了下源码,发现Model类有个_unindexed_properties私有属性,这里面便是不需要索引的属性名了。

于是这样便可让动态属性不索引:

原来Expando和PolyModel类没有key参数

标签:Google App Engine

今天遇到个奇怪的问题,创建实体时设置key老失败,提示:
ReservedWordError: Cannot define property using reserved word 'key'. If you would like to use this name in the datastore consider using a different name like key_ and adding name='key' to the parameter list of the property definition.
可我看文档和读源码都发现有key这个参数,所以实在不明白哪错了。

最后想部署到服务器上试试是不是本地服务器的bug时发现,我用的不是Model类,而是Expando类。于是我改成Model,发现创建成功了…

读了源码后发现,虽然Expando和PolyModel类继承自Model类,但是key是Model类构造器的一个keyword参数,而Expando和PolyModel并没有处理…

« 看看还有什么好玩意