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
})
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。
近期评论