GAE本地开发服务器已支持游标操作

标签:Google App Engine, Python

刚才在GAE论坛看到Paul Kinlan发帖询问数据库游标操作,他说他在SDK 1.2.6里发现_BaseQuery和Query类都提供了cursor,但没有找到相关文档。
接着Rodrigo Moraes给出了使用的例子,但说只能用于本地开发服务器,GAE上仍不支持。
不过游标已在GAE路线图里提出很久了,用以解决超过1000条记录的查询问题,我想下一个版本应该就会支持了吧。

用GAE来收邮件

标签:Google App Engine, Python

虽然GAE很早就提供了发邮件的功能,但一直不支持收邮件,而只是将其写在了路线图里(原本是2009年上半年的计划,但已经明显延后了)。

由于Nick几次提到了smtp2web,所以便去试了下。

更高效地在memcache中存储实体

标签:Google App Engine, Python

刚才在Nick的博客读了一篇《Efficient model memcaching》,才知道原来memcache会使用pickling来存储实体,而GAE不能使用cPickle,所以速度较慢,而且存在兼容性问题,并且可能保存多余的内容(模型实体通常会有个cache镜像)。

而在SDK 1.2.5的数据库API里提供了2个新的方法来解决这个问题:model_to_protobuf(model_instance)和model_from_protobuf(pb)。
这2个方法的速度较快,且不存在兼容性问题。

在GAE中更高效地存储无需索引的数组

标签:Google App Engine, Python, 性能

今天在GAE论坛看到有人说ListProperty太慢了,即使加上indexed=False也非常慢,而用pickle技术保存成Blob类型就会快10倍。

对于这点,Nick Johnson提到了《Store arrays of numeric values efficiently in the datastore》这篇文章。
他的解释是ListProperty会将其中的每个元素编码成一个独立的属性,并多次对其进行序列化,所以会造成很大的开销。
而pickle虽然可以让其只保存成一个元素,但兼容性可能并不好,也不是特别高效。

原来一个账号可以创建超过10个app

标签:Google App Engine

本来还想用父母的手机去多申请一些配额,没想到在GAE论坛里看到了这句:
If you run out of App IDs, you can leave a message here on the forum, and one of us Googlers will increase the number of apps you can create.

-Nick Johnson
哇哈哈,还是免费的~

XMPP应用:用Google App Engine搭建聊天机器人

标签:Google App Engine, Python

今天Google App Engine SDK 1.2.5的发布,带来了XMPP这个好玩的API,于是我立刻拿来尝鲜了。

API其实非常简单,主要是要了解XMPP是什么。但我懒得解释了,感兴趣的就去Google一下或看这几篇XMPP正式RFC标准文档吧。
由于Google Talk是基于这个协议的,而且GAE的XMPP API专门提供了在线查询功能,所以自然就用它了。

« 看看还有什么好玩意