Neutron首先是一个Web Server,那么它就存在一个Web框架选型问题。Neutron选用了两种开源的Web框架。早期版本,Neutron使用了Paste+PasteDeploy+Routes+WebOb组合,作为自己的Web框架。从kilo版本开始,Neutron引入了另一个Web框架pecan。pecan相对于前者,使用起来比较简单。
不过所谓的简单,在Neutron应用中也仅仅体现在加载WSGI Application这一块内容的区别上。两种框架都遵循WSGI规范。从帮助理解Neutron代码角度出发,掌握WSGI规范比简单地了解两种Web框架的API更有意义。
WSGI是Web Server Gateway Interface的缩写。WSGI本身只是一套标准接口,而并不是任何具体的实现。这套接口位于Web Servers和Web Application之间,是为了提升Web Application针对各种Web Servers的适配能力,如下图所示:
能够被Web Server按照WSGI接口调用的Web Application称为WSGI Application,它具备三个特征。
1 是一个可调用的对象。
2 有两个参数:environ、start_response。
3 有一个可迭代的返回值。
一个可调用的对象,指的是Web Server可以调用的对象,它的存在形式,如下表: