博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uwsgi和nginx的故事
阅读量:5874 次
发布时间:2019-06-19

本文共 871 字,大约阅读时间需要 2 分钟。

要谈uwsgi,当然要先谈谈wsgi,wsgi是理论家牛顿,uwsgi就是工程家特斯拉。

wsgi是缩写,全称为web server gateway interface,中文意思就是服务器的网关接口。它是一种通用的接口标准,使python 应用程序和服务器之间可以开始交互了,我更乐意把接口想成翻译官。

uwsgi我们可以看成是一个软件,应用程序。它帮助我们把wsgi协议给实现了,同时也实现了http协议,这样我们可以不再关注底层网络通信的实现,而把精力用在业务逻辑上面。

nginx和apache等都是常见的静态服务器,主要用于处理静态请求,而对于动态生成的html,则可以利用其它应用程序 实现,我这里是用的是python的框架django。而django与nginx服务器之间想要很好的通信的话,就必然需要使用wsgi协议了,我们可以在django框架里面按照wsgi协议的标准写出接口和nginx通信,这是可以的,其实django内置了一个实现了wsgi接口的应用,但性能极差。无论多么复杂的Web应用程序,入口都是一个WSGI处理函数。HTTP请求的所有输入信息都可以通过environ获得,HTTP响应的输出都可以通过start_response()加上函数返回值作为Body。有句话说的好:do not repeat youself,不要重复造轮子。已经有写好的非常不错的实现,那就是uwsgi,它也是一个服务器,可以说就是中间人的角色,左接nginx,右连django。

 

uwsgi又是怎样实现这种连接的呢?

  首先要讲的是,uwsgi的并发能力很强,但是它处理静态文件能力很不理想。所以一般静态文件就交由nginx处理。uwsgi与nginx之间是通过套接字socket就行通信的,他们之间的交互可以理解为是两个进程之间的交互,而它通过实现wsgi协议,可以与python写的应用程序进行交互,这里也就是django框架。

转载于:https://www.cnblogs.com/gj827/p/9776284.html

你可能感兴趣的文章
1000 加密算法
查看>>
exif_imagetype() 函数在linux下的php中不存在
查看>>
Ruby的case语句
查看>>
Linux的链接文件-ln命令
查看>>
maven的tomcat插件如何进行debug调试
查看>>
table表头固定
查看>>
截取字符串中两个字符串中的字符串
查看>>
spring xml properties split with comma for list
查看>>
判断点是否在三角形内
查看>>
Android实战简易教程-第二十三枪(基于Baas的用户注冊验证username是否反复功能!)...
查看>>
在odl中怎样实现rpc
查看>>
leetcode 110 Balanced Binary Tree
查看>>
python活用isdigit方法显示系统进程
查看>>
项目开发总结
查看>>
知行合一
查看>>
jmeter插件之jsonpath提取响应结果和做断言
查看>>
apt-get 命令加 autoclean clean autoremove 区别
查看>>
Docs-->.NET-->API reference-->System.Web.UI.WebControls-->Repeater
查看>>
发布支持多线程的PowerShell模块 —— MultiThreadTaskRunner
查看>>
Ubuntu ctrl+alt会导致窗口还原的问题
查看>>