GAE SDK 1.3.6 版发布

标签:Google App Engine

基本上都是1.3.6 Prerelease里已有的更新,文档也已更新,get_url_base()更名为get_serving_url(),似乎是用Blobstore,但是不占用app资源,和Picasa采用相同构架。

自定义错误页面是在app.yaml里定义,这里有个例子:
error_handlers:
  - file: default_error.html

  - error_code: over_quota
    file: over_quota.html
error_code有3种:
  • over_quota:超出配额
  • dos_api_denial:客户被DoS保护配置禁止访问
  • timeout:响应超时
此外还可以设置mime_type来设定Content-Type。

而且已有Multitenancy API文档,这是一个有关namespace的特性,可以帮助你的应用为多个客户(client)服务。
注意这里的客户是区别于用户(user)的,简单来说你的公司同时为A、B、C这3家公司提供服务,那么A、B、C就是你的客户;而无论任何人,只要有权访问你的app,他就是你的用户(可能是A、B、C的任何一个员工,也可能是一个随机的访客)。
因此数据库的多客户特性就很好理解了,就是把不同公司的客户数据区别开来,免得弄混了或者彼此之间泄露。
上述文字文档里并没提到,不过有SAP经验的应该很容易理解。
当然,你想做到每个用户的数据分离也是可行的,这个只是分离粒度不同而已。

这个新的api叫namespace manager,模块是google.appengine.api.namespace_manager,这里有个例子
这个机制主要是基于Google Apps domain,根据不同的域名来区分客户,并在处理request时设置好namespace(推荐在appengine_config.py里定义一个namespace_manager_default_namespace_for_request()函数),这样数据库就会自动做数据分离(其实就是在Key里设置了namespace参数),实在是非常方便。
目前有3个API支持namespace,它们是Memcache、Datastore和Task queue,注意不包括Blobstore。
此外,Memcache和Datastore的Key是有namespace参数的,如果你手动设置这个参数,就会忽略这个API的设置。

0条评论 你不来一发么↓

    想说点什么呢?