uwsgi

uWSGI

前言

  • WSGI是一种web server与web application之间的通信协议

  • uwsgi也是一种通信协议,和WSGI没关系,用于定义传输信息你的类型

  • uWSGI是一个web服务器,实现了WSGI协议。

WHY NEED uWSGI

Django、Flask等框架中集成了简单的WSGI web服务器,但仅限于简单的开发环境测试,由于生产环境的复杂性,需要专门的服务器来提供支持。

WHY Nginx+uWSGI?

uWSGI+web框架已经可以搭建出一个网页,但对于高并发的访问,需要Nginx做负载均衡和反向代理等。

使用

参考博客

uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http等协议, flask 中可以使用 uWSGI 作为web服务,运行 flask 开发的项目 。

独立使用

即直接通过uWSGI服务器和web框架构建网站。应用于低并发情况。

  1. 创建配置文件

1
2
3
4
5
6
7
8
9
10
11
12
13
[uwsgi]
http = :39001 # 启动程序时所使用的地址和端口,通常在本地运行flask项目,
chdir = /root/home/proj/web_flask/ForBlueprint # 项目目录
wsgi-file = app_run.py # flask程序的启动文件,通常在本地是通过运行 python manage.py runserver 来启动项目的
callable = app # 程序内启用的application变量名
processes = 4 # 处理器个数,进程个数
threads = 2 # 线程个数
stats = 127.0.0.1:39002 # 获取uwsgi统计信息的服务地址
pidfile = uwsgi.pid # 保存pid信息,方便停止服务和重启的时候用
daemonize = ../log/uwsgi.log # 后台运行时记录uwsgi的运行日志
lazy-apps = true # 当需要连接cassandra时,uwsgi无法启动服务,可以使用该选项设置
master-fifo = /opt/mt-search/web-service/mfifo # 使用chain-reloading 逐个work重启,服务不中断, 命令是 echo c > mfifo
touch-chain-reload = true
  1. 运行

1
2
3
4
5
# 进入虚拟环境
workon flask_env

# 运行uwsgi
uwsgi --ini uwsgi.ini # 指向uwsgi配置文件具体路径
1
2
3
4
5
# 常用命令
uwsgi --ini uwsgi.ini # 启动
uwsgi --reload uwsgi.pid # 重启
uwsgi --stop uwsgi.pid # 停止
sudo pkill -f uwsgi -9 # 强制关闭

uwsgi
http://blog.rainna.xyz/2021/02/09/2021-02-09-uwsgi/
作者
rainnalv
发布于
2021年2月9日
许可协议