Wiki

Clone wiki

YUI / Home

说明

YUI是一个很简单的轻量级WSGI兼容的框架,可用于Google App Engine,其命名取自我喜欢的动漫角色名。

部分代码参考了webapp的实现,但如果不算衍生作品的话,我希望能以MIT许可发布。

此外还用到了WebOb的Request类,因为它几乎处理了所有的事,而且被Google App Engine预加载了,所以不影响性能。但我没有用它的Response类,因为输出内容是以str或unicode保存的,性能上没有StringIO好,而且也不适合我扩展。

最后还用了GAEUnit 1.2.8来做单元测试,访问/test就能看到测试结果。如果你不需要的话,当然可以删掉。只有yui.py是必需的。

注意

YUI在缓存部分使用了全局对象,且未做线程同步。因此在Python 2.7的多线程模式下,使用server_cache()、flush_all_server_cache()和clear_expired_server_cache()前,需要执行use_thread_safe_mode()。

特性

  1. URL映射功能,支持惰性加载'模块名.类名'这种字符串形式的handler,也支持命名分组(不要与不命名分组混用)。
  2. 自动处理ETag,请在URL映射时选用合适的Response类。
  3. 自动处理部分Content-Type,例如xhtml。
  4. 为handler增加了before和after方法,用于处理公共的事件。
  5. 客户端和服务器端缓存处理。(以decorator函数方式提供)
  6. 用户验证处理。(以decorator函数方式提供)
  7. 简易的cookie处理。

未来可能会有的功能

你猜

不具备的功能

  1. 模板。因为支持所有模板,所以请选择自己喜欢的。
  2. ORM。Google App Engine有它自己的数据库,API已经足够好用,我看不出有自己实现的必要。
  3. 调试模式。出于性能原因而没提供,毕竟我习惯出错时看后台记录。

性能

启动时间约为55 cpu ms,一个hello world页面的输出为0 ~ 18 cpu ms,平均约为8 cpu ms。
注:GAE貌似改了计时方式,结果会有波动。
附webapp横向比较:启动时间约为220 cpu ms,一个hello world页面的输出为0 ~ 36 cpu ms,平均约为7 cpu ms。

用法

Usage页面。

Updated