发布于 2015-09-13 08:16:05 | 152 次阅读 | 评论: 0 | 来源: PHPERZ
Piston支持流输出至客户端。不过默认情况下该功能是被禁用的,原因是:
要 绕过这一点不利因素,Piston提供了两个代理中间件(“proxy middleware classes”),它们在流输出的情况下不会运行,因此不会在客户端收到数据之前 查看和截断数据。如果不使用这两个中间件,Django就会跟踪输出的内容(以计算E-Tags和Content-Length),因此会导致随后的接收 的peek内容为空。
在 piston.middleware 中有两个类用于替换 ConditionalGetMiddleware 和 CommonMiddleware 。
在 settings.py:
#!python MIDDLEWARE_CLASSES = ( # ... 'piston.middleware.ConditionalMiddlewareCompatProxy', 'piston.middleware.CommonMiddlewareCompatProxy', # ... )
支除任何对 ConditionalGetMiddleware 和 CommonMiddleware 的引用,或者令这两中间件无效。 若有其他中间件需要在流输出之前查看数据,也要使用代理中间件对其进行封装,如下:
#!python from piston.middleware import compat_middleware_factory class MyMiddleware(...): ... MyMiddlewareCompatProxy = compat_middleware_factory(MyMiddleware)
然后在setting.py设置 MyMiddlewareCompatProxy 以取代原有中间件。