编写wsgi应用程序和中间件的更好方法

wsgi_lite的Python项目详细描述


如果编写correctwsgi中间件这么简单,不是很好吗?

>>> from wsgi_lite import lite, lighten

>>> def latinator(app):
...
...     # Make sure that `app` can be invoked via the Lite protocol, even
...     # if it's a standard WSGI 1 app:
...     app = lighten(app)
...
...     @lite
...     def middleware(environ):
...         status, headers, body = app(environ)
...         for name, value in headers:
...             if name.lower()=='content-type' and value=='text/plain':
...                 break
...         else:
...             # Not text/plain, pass the request through unchanged
...             return status, headers, body
...
...         # Strip content-length if present, else it'll be wrong
...         headers = [
...             (name, value) for name, value in headers
...                 if name.lower() != 'content-length'
...         ]
...         return status, headers, (piglatin(data) for data in body)
...
...     return middleware

仅使用两个装饰器,wsgi-lite就可以创建正确且兼容的 中间件和应用程序,无需担心start_responsewriteclose调用。对于那些same两个装饰器,它也 允许您管理在请求结束时释放的资源,以及 自动将关键字参数传递给应用程序或中间件 从wsgi环境(如wsgi服务器扩展或 中间件提供的参数,如请求或会话对象)。

有关详细信息,请查看project’s home page on BitBucket,然后向下滚动到 目录。

wsgi lite目前仅适用于python 2.x(测试版本为2.3到2.7) 但是源代码应该可以移植到3.x中,因为它的魔力仅限于 检查函数参数名,并使用 new.function()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
通过拖动Java Swing scroll JScrollPane   使用springrest控制器的java   为什么使用Java客户端传输的数据在Apache Pulsar上显示为编码?   java当数组位于arraylist中时,如何访问它?   用于处理{Item1}的正则表达式代码。将项2放入数组或列表中   java mouseListener让我的JList表现得很奇怪   java SecurityContextHolder尽管成功登录,但仍承载匿名用户   java如何在selenium自动化中使用captcha   eclipse如何在java中检查按钮是否可单击,SeleniumWebDriver。ps:检查是否可点击,不要等到它可点击   java Android存在读取\调用\日志权限问题   java按这种方式进行取整(保持小数)   Java中检查布尔数组的最快方法   java将列表中的元素替换为其他元素   JavaFX中的javaunicode补充平面   java如何使用hashmap显示图像url