当前位置: 首页 > article >正文

WSGI、uwsgi、uWSGI与Nginx

一、写在前

WSGI、uwsgi与uWSGI

  • WSGI (web server gateway interface 网络服务网关接口) 只能用于python,是一个接口标准协议,django、flask自带有
  • uwsgi 是WSGI的通信协议
  • uWSGI是实现了uwsgi协议和WSGI服务的web服务器

他们是为了将web服务器与web框架连接起来

Nginx、uWSGI 与 Python后端框架的关系


数据交换流程图

数据交换流程图

每个服务处理自己擅长的事情:

  • Nginx:负载均衡,静态资源(css,img,html)直接返回,动态资源反向代理到upstream(uwsgi_pass,fastcgi_pass,proxy_pass)

  • uWSGI:数据交换桥梁

  • Python后端框架:业务逻辑

二、uWSGI

安装

pip install uwsgi

配置

[uwsgi]
# 设置0.0.0.0表示可以接收不同服务器的nginx发送过来的请求,127.0.0.1表示只接收同一服务器发送过来的请求,8000为应用内的监听端口
socket = 0.0.0.0:8000 

# http = 0.0.0.0:8000 # http为直接作为web服务器启动
# http = :5000#启动程序时所使用的地址和端口,通常在本地运行f1ask项目

# 项目目录
chdir = /home/flaskproiect/   

# flask程序的启动文件,通常在本地是通过运行 python manage.py runserver 来启动项目的
wsgi-file = manage.py

# 程序内启用的application变量名
callable = app

# 处理器个数,进程个数
processes = 4

# 线程个数
threads =2

#获取uwsgi统计信息的服务地址
stats =127.0.0.1:9191

# 保存pid信息,方便停止服务和重启的时候用
pidfile = uwsgi.pid

# 后台运行时记录uwsgi的运行日志
daemonize=./1og/uwsgi.log

# 当需要连接cassandra时,uwsgi无法启动服务,可以使用该选项设置
lazy-apps = true

# 使用chain-reloading 逐个work重启,服务不中断,命令是 echoc > mfifo 
master-fifo = /opt/mt-search/web-service/mfifo
touch-chain-reload =true

Nginx反向代理uWSGI

location / {
	include uwsgi_params;
    uwsgi_pass 127.0.0.1:8000;
}

拓展

  • 还可以使用http协议代理uWSGI,这个取决于uwsgi服务使用何种方式启动的 socket 对应 uwsgihttp对应http

    location / {
        include uwsgi_params;
        http_pass 127.0.0.1:8000;
    }
    
  • 在测试时,可以使用uwsgiNginx可以使用http,方便使用postman等工具测试,生产环境中由于使用到了Nginx所以最好使用uwsgi,实现高并发。

三、Nginx
Nginx安装配置详解


http://www.kler.cn/a/375194.html

相关文章:

  • Linux常见命令合集
  • 【linux】ubunda repo是什么
  • Java并发常见面试题总结(上)
  • .net core中间件Polly
  • 快速排序简单实现
  • LSTM,全称长短期记忆网络(Long Short-Term Memory),是一种特殊的循环神经网络(RNN)结构
  • 练习LabVIEW第三十二题
  • 在Python中实现一个简单的社交媒体应用
  • Spring Boot 与 EasyExcel 携手:复杂 Excel 表格高效导入导出实战
  • 基于 SM3 的密钥派生函数 (KDF):国密合规的安全密钥生成方案
  • 低代码用户中心:简化开发,提升效率的新时代
  • es(1)(仅供自己参考)
  • 前端安全:构建坚不可摧的Web应用防线
  • redis的set如何实现的
  • 【WPF】BackgroundWorker类
  • 龙迅#LT8668EX显示器图像处理芯片 适用于HDMI1.4+VGA转4PORT LVDS,支持4K30HZ分辨率,可做OSD菜单亮度调节!
  • 什么是继电器干接点输出
  • 功能测试:方法、流程与工具介绍
  • 20万高薪专业-网络安全(非常详细)零基础入门到精通,收藏这一篇就够了
  • 【源码+文档】基于SpringBoot+Vue旅游网站系统【提供源码+答辩PPT+参考文档+项目部署】
  • 基于企业微信与开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序的客户运营模型优化研究
  • docker file容器化部署Jenkins(一)
  • 【笔面试常见题:三门问题】用条件概率、全概率和贝叶斯推导
  • 语音IC方案,在交通信号灯语音提示器的应用解析,NV040D
  • Windows 基础 (二):系统目录与环境变量
  • 搭建SRS流媒体服务器处理多路无人机视频流