本想睡觉了,突然看到
GAE SDK 1.5.5版发布了,于是就再坚持一下,写完本文吧。
这个版本最重要的更新就是支持Python 2.7了。关于Python 2.7的新功能,可以查看
《What's New in Python 2.7》这篇文档。
我稍微列举一些:
- 支持多线程。可以使用threading库。
- 支持并发请求。在app.yaml中设置threadsafe: true即可启用,必须使用WSGI接口(直接在app.yaml里设置WSGI application对象的路径,而非Python文件)。
- 可以访问bytecode。使用jinja2之类的模版库时,可以将模版编译成字节码;但以前不能执行这些字节码,现在则没有限制了。
- 可以上传bytecode(.pyc文件)。
- 支持部分C库。
同时也需要注意下面几点:
- 只支持High Replication datastore。
- 更新了部分库的版本,可能存在兼容性问题。
- 禁用了quota.get_request_cpu_usage()。
- 不支持zipimport,但可以直接从.zip文件中import。
- app.yaml中的runtime更改为python27。
对我来说最重要的是支持PIL了,这样就不愁生成验证码了。恼火的是必须用HR datastore,老应用还必须迁移。
有空还得看看
webapp2和WebOb 1.1的源码,也许
YUI还需要更新。
而在支持并发请求的同时,全局对象就不安全了,而我在
Doodle中用到的os.environ和hook还得重新考虑。
另外还支持
SetupTools了,不知道可以用它装些什么玩意。
不过目前还没有出Release Notes目前已出Release Notes,部分更新如下:
- 前台请求的最长时间从30秒增加到60秒(后台请求仍为10分钟),URLFetch请求的时间从10秒增加到60秒。
- 最大上传文件数从3000增加到10000,最大文件大小从10MB增加到32MB。
- URLFetches的POST参数大小从1MB增加到5MB。
- 支持Cross Group (XG) Transactions(跨组事务),可以在处理一个事务时,通过2步提交的方式,来支持不同实体组(最多5个)的实体。只支持HR datastore。使用时需要用到db.create_transaction_options()和db.run_in_transaction_options()这2个函数。
- 新增Google Cloud Storage API。除了比REST API易用以外,貌似GAE到GCS之间的传输不通过URLFetch,也就没有文件大小的限制了(不过还得计算GCS的流量)。
- 管理员控制台可以查看billed instances图形。
其他就没什么好说的了。最后鄙视一下QQ输入法for Mac 2.0,打字变得好卡,1.x流畅多了…