慎用wsgiref.handlers.CGIHandler
2010 1 27 11:12 AM 2046次查看
分类:Google App Engine 标签:Google App Engine, Python
最初我以为是自己的缓存处理有问题,可添加了很多检查点,就是找不到这个bug的出处,而且老是时有时无。
最终我把logging设在了传给handler的environ对象上,发现它居然带有If-None-Match头,于是真相大白了:wsgiref.handlers.CGIHandler在初始化请求时,没有处理好environ对象。
接着我把wsgiref.handlers.CGIHandler().run(application)改成了google.appengine.ext.webapp.util.run_wsgi_app(application),发现问题简单地解决了。
这个bug是我在本地开发服务器上发现的,尚未测试GAE服务器上是否存在这个问题。不过建议还是使用Google提供的工具函数来运行,虽然性能稍微低了一点,但至少没有这个令人发指的bug。
看来有的时候不能太相信标准库,虽说我也不确定这是标准库还是GAE SDK的bug,但至少兼容性并不一定完美。
0条评论 你不来一发么↓