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
})

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

扫码去手机上看