2010 4 1 01:21 PM 2225 次查看
分类:Google App Engine 标签:Google App Engine, Python
昨天Google App Engine Team发了一篇《Read Consistency & Deadlines: More control of your Datastore》,不过服务器挂了3天,没法及时写上,所以今天再补上。
在SDK 1.3.2发布时曾提到了强一致性和最终一致性读取,但是没有讲述细节,而这篇文章则阐述了其区别。
默认情况下,datastore是在一个主存储区域进行更新和查询的,这个区域代表最新的数据,访问这个区域则表示使用强一致性。而主存储区域有可能变得暂时不可用(估计是并发数过多或硬件故障),这就会导致查询超时或失败。
而实际上datastore是分布式的,它还有很多副存储区域。这些副存储区域的数据比主存储区域晚几百毫秒至数秒,因而不是最新的。如果你的应用不需要这种强一致性,就可以在主存储区域不可用时,让datastore读取其他存储区域的副本,而这就称为最终一致性读取。
2010 3 26 07:54 AM 1853 次查看
分类:Google App Engine 标签:Google App Engine
刚在Google App Engine Blog看到GAE SDK 1.3.2发布了,和之前的Pre-release差不多。
这次介绍了强一致性读取和最终一致性读取。强一致性读取会在获取和查询时等待所有待处理(已提交,但还未应用到分布式存储器上)的数据,而最终一致性读取只读当前可用的数据,后者在不需要获取完整数据的情况下,可以有效降低读取时间。
防止DoS攻击的配置文档也有了,实际上就是一个黑名单。最多有100项条目,不过支持子网,也支持IP v6。后台也可以查看IP的访问次数,帮助你你决定屏蔽。
邮件API中,InboundEmailMessage的attachments属性已变成列表,而不管附件的个数。
2010 3 20 09:14 AM 1794 次查看
分类:Google App Engine 标签:Google App Engine
几天没看邮件了,突然发现1.3.2也pre-release了。
更新很多,感觉很不错~
2010 3 19 03:11 PM 2175 次查看
分类:Google App Engine 标签:Google App Engine, Python
今天在尝试Alkis Evlogimenos的datastore_cache模块时,发现没有调用memcache,于是跟踪了半天代码,终于找到问题所在了。
这个bug解释起来非常麻烦,我也不清楚是不是Google更改了实现而导致的,先把API调用机制介绍一下吧。
2010 3 9 05:32 PM 1662 次查看
分类:Google App Engine 标签:Google App Engine, Python
实际上和数据库通信都是用字符串,所以将字典手动转换成字符串是比保存成列表,或pickle快的。
而用JSON仍然存在效率问题,所以选择一种更快速的方法比较合适。
2010 3 9 04:34 PM 1607 次查看
分类:Google App Engine 标签:Google App Engine
填写这个Billing Support Request表单即可。
虽说是Billing Support,但实际上未付费也可以。
可提的需求很多,例如添加你能创建的app数。以及增加配额上限。
2010 3 9 04:02 PM 1483 次查看
分类:Google App Engine 标签:Google App Engine
GAE很早就提供了一个管理员控制台工具($PYTHON_LIB/google/appengine/ext/admin),可以用于处理一些常用的操作。
而SDK 1.3.1版新增了一个自定义管理员控制台页面的功能,可以让你添加一些自定义的页面。
2010 3 9 12:32 AM 2407 次查看
分类:Google App Engine 标签:Google App Engine
刚在Google App Engine Blog看到的消息,GAE从下周起开始支持IPv6。
os.environ["REMOTE_ADDR"]将可能获得一个IPv6的地址,因此如果你的代码不兼容的话,可能需要改动。当然,如果你的代码不依赖IP地址,那么就可以完全忽略这点。
2010 2 27 06:14 PM 1523 次查看
分类:Google App Engine 标签:Google App Engine, Python
Expando相比Model来说,多了个动态属性。为了少定义一些模型类,也许用动态属性比较方便,但这又牵扯到一个性能问题:动态属性无法像静态属性一样设置indexed=False。
对我的应用而言,大多数的静态属性是需要索引的,而动态属性则不需要,这便造成了浪费。
在GAE论坛提了半天也没等到好的解决办法,于是自己翻了下源码,发现Model类有个_unindexed_properties私有属性,这里面便是不需要索引的属性名了。
于是这样便可让动态属性不索引:
2010 2 22 09:57 PM 1980 次查看
分类:Google App Engine 标签:Google App Engine
这几天翻GAE的源码时找出一个显示datastore信息的工具,对了解datastore很有帮助。
« 看看还有什么好玩意