python wsgi的路由中间件
在新浪云python环境中搭建了一个小应用,分为api接口和网页管理后台两部分,两部分是独立的,这就要创建2个wsgi接口来处理,但是新浪云只支持绑定一个wsgi,没办法,自己动手丰衣足食吧!
wsgi协议也很简单,它就是一个callable对象,函数或者能call的类都行。
接口函数有2个参数:environ和start_response,和请求相关的信息都在environ参数中。
因为这里只需要简单判断一下路径,不需要完整实现wsgi接口,所以其他复杂的内容就跳过了。
我们需要的路径信息就在environ[“PATH_INFO”]中,只要从中取出路径,自己稍微判断一下,然后分发给对应的app就行了!
index.wsgi:
from myapi import app as api from myapp import app def route_middleware(environ, start_response): path = environ.get("PATH_INFO") if path.startswith("/api"): return api(environ, start_response) else: return app(environ, start_response) application = sae.create_wsgi_app(route_middleware)
——————————————
2014.03.22 更新:
晚上在阅读Flask的文档时,发现了一个现成的分发中间件,它包含在Werkzeug中,使用十分方便!
Werkzeug是一个WSGI工具包,Flask依赖它,并随Flask自动安装。
from werkzeug.wsgi import DispatcherMiddleware app = DispatcherMiddleware(app, { '/app2': app2, '/app3': app3 })
近期评论