GAE SDK 1.5.2版发布

标签:Google App Engine

今早起来发现GAE SDK 1.5.2版发布了,不过工作太忙就无暇顾及了,于是现在补上更新列表:

  • 可以在管理员控制台的Application Settings页面里设置最大空闲实例数和最小等待时间。
  • 索引中有重复字段的不会再报索引爆炸的警告。
  • SDK支持并行的数据库事务。
  • Datastore的stats API支持按namespace查询。
  • 管理员控制台的Task Queues页面可以显示请求头、过去的运行信息和任务的payload。
  • Pull queue可以用modify_task_lease()来修改lease(租期和任务数)。
  • Pull Task的最大尺寸增加到1MB。
  • 可用appcfg.py的"backend configure"指令来修改backend instances数目,而无需先停止instances。
  • Mail API可设置References和In-Reply-To头。
  • SDK的APPLICATION_ID环境变量将含dev~前缀。获取app id的推荐方式是用appidentity.get_application_id()。可以使用--default_partition参数来修改这个前缀(后面会附加一个“~”符号)。
  • Deferred API的defer()可接收_target参数,用于指定应用的version或backend。
  • db.Model增加to_dict()实例方法。
  • Images API增加get_original_metadata()方法来获取图像的EXIF信息。
  • db.py增加@transactional装饰器,用于标注一个函数用于执行事务。

此外,Go SDK的进展很慢,看上去还是个玩具…

在GAE上搭建XML-RPC服务

标签:Google App Engine, Python

前些日子有人问Doodle是否支持Windows Live Writer,我只是回答了不支持而已。原因很简单,我的Windows XP很奇怪,几次装Live Writer都失败,对微软已经绝望了。
不过现在已经转移到Mac OS X上了,装软件没这么奇葩的兼容性问题,于是就研究起weblog publishing API来。

博客发布API大致有2类:一类是基于XML-RPC服务的,包括Blogger API、MetaWeblog API、MovableType API和WordPress API等;另一类则是Atom Publishing Protocol。
后者虽然技术上比前者强大,但较为复杂(例如认证是基于HTTP的认证机制),而且由于出现得较晚,支持它的也比较少。当然,对我来说更重要的是文档很难找,因为这个协议并不只用于blog,一些细节上的东西就不知道怎么搜索了。
于是比较了1天后,还是选择了XML-RPC。简单来说,它就是用XML封装方法名和各个参数,POST给XML-RPC服务器,再由服务器返回XML封装的方法运行结果。至于各种API,实际上只是方法和参数的差异,原理都是一致的。

下面举个提供加法的XML-RPC例子。

GAE SDK 1.5.1版发布

标签:Google App Engine

前几天GAE SDK 1.5.0 Prerelease版发布了,由于新特性没文档,我也就没介绍了。这几天部署应用时老提示有新SDK,不过就是没放出下载。而今天,1.5.1正式版终于发布了,更新如下:
  • 外部请求将带上X-AppEngine-Country头,基于用户的IP,以ISO-3166-1 alpha-2国家码来标明的访问者的国家。CGI环境下可用os.environ['HTTP_X_APPENGINE_COUNTRY']获取,我自己测试时可以拿到'CN',不过使用代理和反向代理的就只能拿到代理服务器所在的国家了。
  • Channel API可以检测用户状态。需要在app.yaml的inbound_services里增加xmpp_presence,详情可见User Presence文档。
  • Images API支持WebP格式。(本地是用PIL,所以不支持)
  • 本地开发服务器新增--high_replication参数,模拟High Replication Datastore的行为(查询实体时,最近改写的实体可能不会返回)。
  • 管理页面的后台记录可以选择时区了。(以前为PST,还得考虑夏时令的问题。注意没有北京时间,而上海时间不会显示最近6分钟的请求,所以建议设为香港时间。)
  • Python SDK增加ProtoRPC API。这个API还是实验性质的,我只是粗略看了下,大致是用于构建基于HTTP的RPC服务的。简单来说,按照它预定义的格式来进行请求,再返回一个预定义格式的响应。感觉没多大用处,因为自己实现JSON或XML格式的RPC服务也不难。
  • 增加app_identity API,可用于获取应用id和默认版本的域名(例如my-app.appspot.com);此外还在请求其他服务时,能对请求进行认证(也就是签名啦)。

GAE SDK 1.5.0 Prerelease版发布

标签:Google App Engine

今天凌晨,GAE SDK 1.5.0 Prerelease版发布了。改动很多,但是由于没文档,不少东西我也不清楚,所以只翻译一些我感兴趣的:

  • 任务队列的参数大小增大。(超过后只能使用数据库来保存参数,所以这个改动很有意义。)
  • HTTP请求和响应大小增大为32MB。(做代理更方便了。)
  • 创建新应用时,High Replication Datastore将作为缺省设置,以取代Master/Slave Datastore。
  • 任务队列的执行速率增大到500/s。(貌似一般应用也有500QPS的限制。)
  • db.py新增异步操作:get_async()、put_async()、delete_async()和allocate_ids_async(),调用函数返回值的get_result会阻塞直到拿到数据。

其他的就等正式版发布再翻译吧~

GAE SDK 1.4.2版发布

标签:Google App Engine

刚发现GAE SDK 1.4.2版已经提供下载了,但官方目前还未发布公告和更新说明。

应该和前几天发布的prerelease版本差不多,稍后出公告了我再翻译吧。

« 看看还有什么好玩意