发布信息

uWSGI和Flask之间的相关 如何了解Nginx (uwsgi和nginx)

     2024-10-23 21:41:27     591

本文目录导航:

如何了解Nginx,uWSGI和Flask之间的相关

总括来说,客户端从发送一个 HTTP 恳求到 Flask 处置恳求,区分经过了 web 主机层,WSGI层,web框架层,这三个档次。

不同的档次其作用也不同,上方简明引见各层的作用。

图1:web主机,web框架与 WSGI 的三层相关Web主机层关于传统的客户端 – 主机架构,其恳求的处置环节是,客户端向主机发送恳求,主机接纳恳求并处置恳求,而后给客户端前往照应。

在这个环节中,主机的作用是:接纳恳求处置恳求前往照应Web主机是一类不凡的主机,其作用是关键是接纳 HTTP 恳求并前往照应。

提起 web主机大家都不会生疏,经常出现的 web主机有 Nginx,Apache,IIS等。

在上图1的三层结构中,web主机是最先接纳用户恳求的,并将照应结果前往给用户。

Web框架层Web框架的作用关键是繁难咱们开发 web运行程序,HTTP恳求的灵活数据就是由 web框架层来提供的。

经常出现的 web框架有Flask,Django等,咱们以 Flask 框架为例子,展现 web框架的作用:Pythonfrom flask import Flaskapp = Flask(__name__)(/hello)def hello_world():return Hello World!if __name__ == __main__(host=0.0.0.0, port=8080)from flask import Flaskapp = Flask(__name__)(/hello)def hello_world():return Hello World!if __name__ == __main__(host=0.0.0.0, port=8080)以上繁难的几行代码,就创立了一个 web运行程序对象 app。

app 监听机器一切 ip 的 8080 端口,接受用户的恳求衔接。

咱们知道,HTTP 协定经常使用 URL 来定位资源,上方的程序会将门路 /hello 的恳求交由 hello_world 方法处置, hello_world 前往 ‘Hello World!’ 字符串。

关于 web框架的经常使用者来说,他们并不关心如何接纳 HTTP 恳求,也不关心如何将恳求路由到详细方法处置并将照应结果前往给用户。

Web框架的经常使用者在大局部状况下,只须要关心如何成功业务的逻辑即可。

WSGI层WSGI 不是主机,也不是用于与程序交互的API,更不是实在的代码,WSGI 只是一种接口,它只实用于 Python 言语,其全称为 Web Server Gateway Interface,定义了 web主机和 web运行之间的接口规范。

也就是说,只需 web主机和 web运行都遵守WSGI协定,那么 web主机和 web运行就可以轻易的组合。

上方的代码展现了 web主机是如何与 web运行组合在一同的Pythondef application(env, start_response):start_response(200 OK, [(Content-Type, text/html)])return [bHello World]123def application(env, start_response):start_response(200 OK, [(Content-Type, text/html)])return [bHello World]方法 application由 web主机调用,参数 env, start_response 由 web主机成功并传入。

其中, env是一个字典,蕴含了相似 HTTPHOST,HOSTUSERAGENT,SERVERPROTOCO 等环境变量。

start_response则是一个方法,该方法接受两个参数,区分是 status, response_headers。

application方法的关键作用是,设置 http 照应的形态码和 Content-Type 等头部消息,并前往照应的详细结果。

上述代码就是一个完整的 WSGI 运行,当一个允许 WSGI 的 web主机接纳到客户端的恳求后,便会调用这个 application 方法。

WSGI 层并不须要关心 env, start_response 这两个变量是如何成功的,就像在 application 外面所做的,间接经常使用这两个变量即可。

值得指出的是,WSGI 是一种协定,须要区分几个相近的名词:uwsgi:同 wsgi 一样也是一种协定,uWSGI主机正是经常使用了 uwsgi 协定uWSGI:成功了 uwsgi 和 WSGI 两种协定的web主机。

留意 uWSGI 实质上也是一种 web主机,处于上方形容的三层结构中的 web主机层。

CGI:通用网关接口,并不限于 Python 言语,定义了 web主机是如何向客户端提供灵活的内容。

例如,规则了客户端如何将参数传递给 web主机,web主机如何将参数传递给 web运行,web运行如何将它的输入如何发送给客户端,等等。

消费环境下的 web运行都不经常使用 CGI 了,CGI进程(相似 Python 解释器)针对每个恳求创立,用完就放弃,效率低下。

WSGI 正是为了代替 CGI 而产生的。

说到这,咱们基本理清了 WSGI 在 web主机与 web框架之间作用:WSGI 就像一条纽带,将 web主机与 web框架衔接起来。

回到本文的标题,Nginx 属于一种 web主机,Flask属于一种 web框架,因此,WSGI 与 Nginx、Flask 的作用就不明而喻了。

Nginx,WSGI,Flask 之间的对话Nginx:Hey,WSGI,我刚收到了一个恳求,我须要你作些预备,而后由Flask来处置这个恳求。

WSGI:OK,Nginx。

我会设置好环境变量,而后将这个恳求传递给Flask处置。

Flask:Thanks WSGI!给我一些期间,我将会把恳求的照应前往给你。

WSGI:Alright,那我等你。

Flask:Okay,我成功了,这里是恳求的照应结果,恳求把结果传递给Nginx。

WSGI:Good job!Nginx,这里是照应结果,曾经依照要求给你传递回来了。

Nginx:Cool,我收到了,我把照应结果前往给客户端。

大家协作欢快~

python罕用的8个框架

python罕用的8个框架

Django是一个开明源代码的Web运行框架由Python写成。

驳回了MVC的框架形式,即模型M,视图V和控制器C。

Django是一个基于MVC结构的框架。

然而在Django中,控制器接受用户输入的局部由框架自行处置,所以Django里更关注的是模型(Model)、模板(Template)和视图(Views称为MTV形式。

它们各自的职责如下:

模型(Model),即数据存取层处置与数据相关的一切事务:如何存取、如何验证有效性、蕴含哪些行为以及数据之间的相关等。

模板(Template),即体现层处置与体现相关的选择:如何在页面或其余类型文档中启动显示。

视图(View),即业务逻辑层存取模型及调取失当模板的相关逻辑。

模型与模板的桥梁。

Tornado是一种Web主机软件的开源版本。

Tornado和如今的干流Web主机框架(包括大少数Python的框架)有着显著的区别:它是非阻塞式主机,而且速度相当快。

得利于其非阻塞的形式和对epollf的运用,Tornado每秒可以处置数以千计的衔接,因此Tornado是实时Web服务的一个现实框架。

Bottle是一个Python Web框架,整个框架只要一个文件,几十K,却自带了门路映射、模板、繁难的数据库访问等web框架组件,确实是个可用的框架。

初学web开发可以拿来玩玩,其语法繁难,部署也很繁难。

是一个轻量级Python web框架,它繁难而且配置弱小。

是一个开源名目。

该框架由已故美国作家、Reddit联结开创人、RSS规格协作发明者、驰名计算机黑客Aaron Swartz开发。

目前已被很多家大型网站所经常使用。 uWSGI和Flask之间的相关

繁难易学,只需有Python基础,把握就十分容易。

Flask是一个经常使用Python编写的轻量级Web运行框架。

其WSGl工具箱驳回Werkzeug模板引擎则经常使用Jinja2。

Flask经常使用BSD授权。

Flask也被称为“microframework”,由于它经常使用繁难的外围,用extension参与其余配置。

Flask没有自动经常使用的数据库、窗体验证工具。

Pyramid是一个小型,极速的Python webframework.,是Pylons Project的一局部,驳回的授权协定是BSD-like license。

Pyramid吸取了Zope、Pylons和Django的好处,适宜开发大型名目,也适宜小名目,领有十分好的性能。

Scrapy,Python开发的一个极速、上档次的屏幕抓取和web抓取框架,用于抓取web站点并从页面中提取结构化的数据。

Scrapy用途宽泛,可以用于数据开掘、!监测和智能化测试Scrapy吸引人的中央在于它是一个框架,任何人都可以依据需求繁难的修正。

它也提供了多种类型爬虫的基类,如baseSpider、爬虫等,最新版本又提供了web2.0爬虫的允许。

Scrap,是碎片的意思,这个Python的爬虫框架叫Scrapy。

pandas是基于NumPy的一种工具,该工具是为了处置数据剖析义务而创立的。

Pandas归入了少量库和一些规范的数据模型,提供了高效地操作大型数据集所需的工具。

pandas提供了少量能使咱们极速方便地处置数据的函数和方法。

它是使Python成为弱小而高效的数据剖析环境的关键起因之一。

python框架有哪些

框架就是经过提供一个开发Web程序的基本架构,而python框架就是由python言语编写的框架,python框架有:Django、Flask、Scrapy、Tornado、Web2py等。

Django:Django应该是最闻名的Python框架,最闻名的是其全智能化的治理后盾:只须要经常使用起ORM,做繁难的对象定义,它就能智能生成数据库结构、以及全配置的治理后盾。

Flask:Flask也被称为“microframework”,由于它经常使用繁难的外围,用extension参与其余配置,Flask是一个用Python编写的轻量级Web运行框架,基于Werkzeug WSGI工具箱和Jinja2模板引擎。

总结:框架就是经过提供一个开发Web程序的基本架构,而python框架就是由python言语编写的框架,python框架有:Django、Flask、Scrapy、Tornado、Web2py等。

相关内容 查看全部