【Python之Flask框架】Day1
一、了解Flask
短小精悍,可扩展性强(第三方扩展,Flask文档里有每个模块的收集github)
与Django的区别:Django重而大,自带多种武器,Flask通过扩展也可实现。
二、Flask快速使用案例
2.1 wsgi接口
WSGI是 Web Server Gateway Interface 的缩写。它是 Python应用程序(application)或框架(如 Django)和 Web服务器之间的一种接口,已经被广泛接受。它是一种协议,一种规范,其是在 PEP 3333 提出的。这个协议旨在解决众多 web 框架和web server软件的兼容问题。有了WSGI,你不用再因为你使用的web 框架而去选择特定的 web server软件。
常见的web应用框架有:Django,Flask等。
-django,wsgiref
-flask,werkzurg
from werkzeug.wrappers import Request, Response
from werkzeug.serving import run_simple
@Request.application
def hello(request):
return Response('Hello World!')
if __name__ == '__main__':
run_simple('localhost',4000,hello)
【Q1】模块引用变灰:没有使用到相应模块
【Q2】@是什么?(python中@的用法)
在Python的函数中偶尔会看到函数定义的上一行有@functionName的修饰,当解释器读到@这样的修饰符的时候会优先解除@后的内容,直接就把@的下一行的函数或者类作为@后边函数的参数,然后将返回值赋给下一个修饰的函数对象。
【Q3】run_simple()是什么?
启动一个 WSGI application。
//当客户端发出一个 HTTP 请求后,是如何转到我们的应用程序处理并返回的呢?
1、两级结构
在这种结构里,uWSGI作为服务器,它用到了HTTP协议以及wsgi协议,flask应用作为application,实现了wsgi协议。当有客户端发来请求,uWSGI接受请求,调用flask app得到相应,之后相应给客户端。
这里说一点,通常来说,Flask等web框架会自己附带一个wsgi服务器(这就是flask应用可以直接启动的原因),但是这只是在开发阶段用到的,在生产环境是不够用的,所以用到了uwsgi这个性能高的wsgi服务器。