专栏名称: Python开发者
人生苦短,我用 Python。伯乐在线旗下账号「Python开发者」分享 Python 相关的技术文章、工具资源、精选课程、热点资讯等。
目录
相关文章推荐
Python开发者  ·  从 3 ... ·  昨天  
Python开发者  ·  GitHub 第 10 ... ·  2 天前  
Python爱好者社区  ·  确认裁员了,很严重,所有人做好准备吧! ·  4 天前  
Python爱好者社区  ·  挑行李回家的高考女生火了!热心网友愿资助,多 ... ·  4 天前  
Python爱好者社区  ·  全球第二大成人网站,正在被打包出售。。。 ·  5 天前  
51好读  ›  专栏  ›  Python开发者

一个 Flask 应用运行过程剖析

Python开发者  · 公众号  · Python  · 2017-05-05 18:06

正文

请到「今天看啥」查看全文


'/shared' : os . path . join ( os . path . dirname ( __file__ ), 'shared' )

})


Flask应用通过以上的代码,app便会成为一个SharedDataMiddleware实例,之后便可以在http://example.com/shared/中访问shared文件夹下的内容。


对于中间件SharedDataMiddleware,Flask应用在初始实例化的时候便有所应用。其中有这样一段代码:


self . wsgi_app = SharedDataMiddleware ( self . wsgi_app , {

self . static_path : target

})


这段代码显然会将wsgi_app变成一个SharedDataMiddleware对象,这个对象为Flask应用提供一个静态文件夹/static。这样,当整个Flask应用被调用时,self.wsgi_app(environ, start_response)会执行。由于此时self.wsgi_app是一个SharedDataMiddleware对象,所以会先触发SharedDataMiddleware对象的__call__(environ, start_response)方法。如果此时的请示是要访问/static这个文件夹,SharedDataMiddleware对象会直接返回响应;如果不是,则才会调用Flask应用的wsgi_app(environ.start_response)方法继续处理请求。


例子二: 中间件DispatcherMiddleware


中间件DispatcherMiddleware也是werkzeug.wsgi模块中的一个类。这个类可以讲不同的应用“合并”起来。以下是一个使用中间件DispatcherMiddleware的例子。


from flask import Flask

from werkzeug import DispatcherMiddleware

app1 = Flask ( __name__ )

app2 = Flask ( __name__ )

app = Flask ( __name__ )

@ app1 . route ( '/' )

def index () :

return "This is app1!"

@ app2 . route ( '/' )

def index () :

return "This is app2!"

@ app . route ( '/' )

def index () :

return "This is app!"

app = DispatcherMiddleware ( app







请到「今天看啥」查看全文