python web开发之WSGI/uwsgi/uWSGI详解

1. 三者的定义

  • WSGI是一种通信协议。
  • uwsgi是一种传输协议。
  • uWSGI是实现了uwsgi和WSGI两种协议的Web服务器。

2.三者的使用场景

WSGI,全称 Web Server Gateway Interface,是为 Python 语言定义的 Web 服务器和 Web 应用程序或框架之间的一种简单而通用的接口。定义了Web服务器如何与Python应用程序进行交互,使得使用Python写的Web应用程序可以和Web服务器对接起来。

server端会先收到用户的请求,然后会根据规范的要求调用application端,调用的结果会被封装成HTTP响应后再发送给客户端。

要使用WSGI,需要分别实现server角色和application角色。

WSGI协议主要包括serverapplication两部分

  • WSGI server负责从客户端接收请求,将request转发给application,将application返回的response返回给客户端;
  • WSGI application接收由server转发的request,处理请求,并将处理结果返回给server。application中可以包括多个栈式的中间件(middlewares),这些中间件需要同时实现server与application,因此可以在WSGI服务器与WSGI应用之间起调节作用。

WSGI协议其实是定义了一种serverapplication解耦的规范,Application端的实现一般是由Python的各种框架来实现的,比如Django,Flask,Tornado, web.py等,一般开发者不需要关心WSGI的实现,框架会会提供接口让开发者获取HTTP请求的内容以及发送HTTP响应;

Server端的实现会比较复杂一点,这个主要是因为软件架构的原因。一般常用的Web服务器,如Apache和nginx,都不会内置WSGI的支持,而是通过扩展来完成。Nginx上一般是用proxy的方式,用nginx的协议将请求封装好,发送给应用服务器,比如uWSGI,应用服务器会实现WSGI的服务端、进程管理以及对application的调用。

以提升可移植 Web 应用开发的共同点。

例如: uWSGI和Gunicorn都是实现了WSGI server协议的服务器,Django,Flask是实现了WSGI application协议的web框架,可以根据项目实际情况搭配使用。

  • wsgi server (比如uWSGI)实现wsgi协议规范的服务器我们叫做wsgi服务器,也就是uWSGI服务器

  • wsgi application(比如django )实现wsgi协议的应用,我们叫做wsgi应用,比如Django,Falsk

uwsgi 常用于在uWSGI服务器与其他网络服务器的数据通信;是uWSGI服务器实现的一个自有的协议,即uWSGI 的一种内部协议(之前的协议都是使用字符串,而采用二进制来存储和解析数据的uwsgi的速度更快)

  • WSGI是一种通信协议。
  • uwsgi是一种线路协议而不是通信协议,在此常用于在uWSGI服务器与其他网络服务器(Nginx)的数据通信。

Nginx(对外服务器)和uWSGI(对内服务器)之间的通信,是基于uwsgi协议进行的

  

uWSGI 是一种web服务器,是实现了uwsgi,WSGI,http协议的Web服务器。(类似的web服务器还有部署java web应用的tomcat

uWSGI旨在为部署分布式集群的网络应用开发一套完整的解决方案。主要面向web及其标准服务。由于其可扩展性,能够被无限制的扩展用来支持更多平台和语言。它要做的就是把HTTP协议转化成语⾔⽀持的⽹络协议。⽐如把HTTP协议转化成WSGI协议,让Python可以直接使⽤。Nginx中HttpUwsgiModule的作⽤是与uWSGI服务器进⾏交换。

uWSGI的主要特点是:

  • 超快的性能
  • 低内存占用
  • app管理
  • 详尽的日志功能(可以用来分析app的性能和瓶颈)
  • 高度可定制(内存大小限制,服务一定次数后重启等)

为什么有了uWSGI为什么还需要nginx?因为nginx具备优秀的静态内容处理能⼒,然后将动态内容转发给uWSGI服务器,这样可以达到很好的客户端响应。

WSGI,uwsgi, uWSGI: 实现过程图解

参考链接 :

WSGI,uwsgi, uWSGI详解

https://blog.csdn.net/feyehong/article/details/102933412

部署示例:

Nginx+uWSGI+Flask服务部署_nginx flask_Hi~晴天大圣的博客-CSDN博客 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/4502.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于微信小程序的求职招聘系统设计与实现(Java+spring boot+MySQL+微信小程序)

获取源码或者论文请私信博主 演示视频: 基于微信小程序的求职招聘系统设计与实现(Javaspring bootMySQL微信小程序) 使用技术: 前端:html css javascript jQuery ajax thymeleaf 微信小程序 后端:Java s…

如何为SoC做ARM CPU适配——以裸核使用malloc为例

本文任务:为陌生的SoC平台编写基础软件,适配 malloc() 函数 0 如何为SoC做ARM CPU适配 今时不同往日,我们平时开发/娱乐接触到的消费级MCU/MPU基本山都是包含处理核与一系列外设的SoC。如果熟悉裸片开发,一定会在厂家提供的标准…

铁电材料极化高压放大器ATA-7025技术指标及使用说明

铁电材料是一类具有特殊电学性质的材料,在现代电子技术和器件中具有广泛的应用。铁电材料的极化是其重要的特征之一,极化测试是评估铁电材料性能的关键方法之一。一般铁电极化测试,是通过根据外电场施加的电压变化来观察材料产生的极化效应。…

结构型模式 - 组合模式

概述 对于这个图片肯定会非常熟悉,上图我们可以看做是一个文件系统,对于这样的结构我们称之为树形结构。在树形结构中可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。可以将这颗树理…

微信合并转发的图片如何批量保存

今天遇到一个场景:朋友给转发来了一个合并的聊天记录,里面是几十张图片,希望能打印出来。逐张保存太费手了。下面是批量保存图片的方法: 1、登录PC端微信; 2、将要保存图片的这条合并转发的聊天记录收藏;…

Camtasia Studio 2023怎么导出mp4格式的视频的详细教程介绍

很多用户刚接触Camtasia Studio 2023,不熟悉如何保存mp4格式的视频。在今天的文章中小编为大家带来了Camtasia Studio 2023保存为mp4格式的视频的详细教程介绍。 Camtasia Studio 2023保存为mp4格式的视频的详细教程 1、 打开Camtasia Studio。 Camtasia Studio- …

解决appium-doctor报ffmpeg cannot be found

一、下载ffmpeg安装包 https://ffmpeg.org/download.html 找到如图所示红框位置点击下载ffmpeg安装包。 二、配置ffmpeg环境变量 三、检查ffmpeg版本信息 重新管理员打开dos系统cmd命令提示符,输入ffmpeg查看是否出现版本信息,安装完好。 ffmpeg

短视频矩阵系统源码--开发实践

短视频矩阵系统源码开发技术: 1. 数据采集:使用Python的requests库进行数据爬取,使用Selenium模拟浏览器操作,解决抖音反爬虫机制。 2. 数据处理:使用Python的正则表达式、BeautifulSoup等库进行数据处理。 3. 关键…

使用Python和Scrapy实现抓取网站数据

Scrapy是一个功能强大的网络爬虫框架,允许开发者轻松地抓取和解析网站内容,这篇文章主要为大家介绍了如何使用Python的Scrapy库进行网站数据抓取,需要的可以参考一下 在本文中,我们将介绍如何使用Python的Scrapy库进行网站数据抓…

selenium-多窗口和frame处理

1.切换窗口 适用场景:点击按钮后,重新打开一个窗口,想要在新的窗口定位操作,就需要切换窗口 原理:获取窗口的唯一标识就是句柄,获取到句柄,就可以切换到对应的窗口了 处理方法: …

安达发|高级计划与智能排程APS软件的发展史进程

从泰勒的科学管理理论出发,率先追求科学的管理理论和管理工具,在计算机成为企业日常管理的基本工具之后,信息系统已经成为提高工厂管理水平的重要支柱。 在工厂计划领域,开始了从MRP到MRPII再到ERP的演变过程。MRPII指的是制造…

自动化测试工具比传统测试工具的优势体现在哪里?

随着软件行业的快速发展和扩张,自动化测试工具在提高测试效率和质量方面起到了不可或缺的作用,那你知道自动化测试工具比传统测试工具的优势体现在哪里吗? 首先,自动化测试工具能够大大缩短测试周期。相比于传统手动测试&#xff…

Spring AOP知识点详解

Spring AOP是 Spring最核心的能力,那到底什么是AOP呢,今天了不起带大家了解一下。 AOP是什么 AOP(Aspect Oriented Programming):面向切面编程,是OOP(面向对象编程)的一个延续,其和OOP一样,也是一种编程思想&#xff0…

大模型时代,腾讯云“复制”腾讯|WAIC2023

点击关注 文|郝鑫 编|刘雨琦 刚过去的WAIC(世界人工智能大会)俨然成为了大模型厂商的成果汇报大会。 百度文心大模型升级到3.5版本,训练速度提升2倍,推理速度提升30倍;华为云发布盘古大模型3…

《无畏契约》游戏分析

文章目录 介绍游戏继承性《守望先锋》游戏美术对比游戏机制对比 《CSGO》游戏美术对比游戏机制对比 《英雄联盟》游戏美术对比游戏机制对比 《无畏契约》的优点《无畏契约》的缺点该游戏值得学习之处总结 介绍 《无畏契约(VALORANT)》是一款由拳头游戏&…

计算机vcruntime140.dll丢失的解决方法,重新安装教程

vcruntime140.dll是Microsoft Visual C Redistributable文件中的一个动态链接库(DLL)。这个文件是由Microsoft开发的,用于支持C编程语言的运行环境。vcruntime140.dll是Windows系统非常重要的文件,通常会被一些应用程序或游戏所需…

AR气象博物馆模拟体验提升青少年认知

国际气象节主要目的是唤起人们对气象工作的重视和热爱。近年来,极端天气频发,人们需要提高警惕,AR气象远程普利用ar技术特有的沉浸式的体感互动,通过模拟演练提升体验者的安全防范意识和求生技巧。 系统结合VR虚拟现实、AR增强现实…

准备WebUI自动化测试面试?这30个问题你必须掌握(二)

本文共有11000字,包含了后十五个问题,如需要前十五个问题,可查看文末链接~ 16. 在WebUI自动化测试中,你如何处理验证码或图像识别的问题? 1. 人工识别:一种简单但费时费力的方法是使用人工手动识别验证码。…

事件传播机制和事件委托

DOM事件流 DOM事件流(event flow )存在三个阶段:事件捕获阶段、处于目标阶段、事件冒泡阶段。事件捕获(event capturing):通俗的理解就是,当鼠标点击或者触发dom事件时,浏览器会从…

(学习笔记-TCP连接建立)TCP 为什么是三次握手?不是两次、四次?

常规回答:“因为三次握手才能保证双方具有接收和发送的能力” 原因一:避免历史连接 三次握手的首要原因是为了防止旧的重复连接初始化造成混乱。 假设:客户端先发送了SYN(seq90)报文,然后客户端宕机了,而且这个SYN报…