uWSGI基础记录:

          uWSGI 是一个高性能的 WSGI 服务器,广泛用于部署 Python Web 应用程序。它支持多种协议(如 WSGI、HTTP、FastCGI、SCGI 和 uWSGI 协议),并具备多进程和多线程架构,适合高并发场景。

        作为python 应用级服务器,一般常与代理服务器Nginx一起使用。相对于Gunicorn、Daphne和Waitress以及Mod_WSGI而言,虽然相对uWSGI较为简单,但是性能和功能方面,都不如uWSGI

安装 uWSGI

pip install uwsgi

安装完成后,记得检查一下

uwsgi --version

注意:如果在windows中使用,可能会发送报错,可以使用conda安装或者在linux中操作

配置文件

创建一个 uwsgi.ini 的配置文件,用于写uwsgi的一些配置。

[uwsgi]
module = wsgi:app  
home = /your/path  
master = true  
processes = 4  
http-socket = 0.0.0.0:5000
threads = 2  

module 一般是指定用模块, wsgi是模块名(改为自己的), app是程序实例化名

home = /your/path    设置自身虚拟环境变量位置

master = true    启用主进程,允许 uWSGI 在后台管理工作进程。

processes     设置工作进程

http-socket    启动一个 HTTP 服务,监听所有 IP 地址的 8000 端口

thredas   每个进程启用2个线程

基本使用

如果项目已经创建好了, 那么就将 uwsgi.ini 文件放入项目根目录中。启动项目

uwsgi --ini uwsgi.ini

假如项目是使用Flask,那么,在一个文件中启动flask

from flask import Flask

app = Flask(__name__)

@app.route('/')
def hello():
    return "uWSGI 正在启动"

if __name__ == "__main__":
    app.run()
uwsgi --ini uwsgi.ini

通过uwsgi命令启动uwsgi服务。在浏览器中输入IP+端口号进行访问。

uWSGI 通常与 Nginx 搭配使用,Nginx 负责处理静态文件和反向代理请求到 uWSGI。一般需要先配置 Nginx 来代理请求。因为uWSGI只是个应用服务器,处理动态请求。

uwsgi.ini配置详解

1. [uwsgi] 部分
socket: 指定 uWSGI 监听的套接字路径或 IP 地址和端口。----示例:socket = 127.0.0.1:8000 或 socket = /tmp/uwsgi.sock。

http: 如果 uWSGI 直接作为 HTTP 服务器运行,可以使用 http 参数指定监听地址和端口。----示例:http = 127.0.0.1:8000。

chdir: 指定 uWSGI 启动时的工作目录。----示例:chdir = /home/python/Desktop/projects/test。

module: 指定 WSGI 应用的模块路径,格式为 module = myapp.wsgi:application。

wsgi-file: 指定 WSGI 应用的 Python 文件路径。----示例:wsgi-file = test/wsgi.py。

callable: 指定 WSGI 应用的可调用对象名称。----示例:callable = app。

processes: 指定 uWSGI 启动的工作进程数。----示例:processes = 4。

threads: 指定每个工作进程的线程数。----示例:threads = 2。

master: 是否启用主进程模式,主进程负责管理子进程。----示例:master = true。

pidfile: 指定主进程的 PID 文件路径,用于管理 uWSGI 进程。----示例:pidfile = uwsgi.pid。

daemonize: 指定 uWSGI 是否以后台守护进程方式运行,并设置日志文件路径。----示例:daemonize = uwsgi.log。

vacuum: 是否在进程退出时清理临时文件和套接字文件。----示例:vacuum = true。

chmod-socket: 设置套接字文件的权限。----示例:chmod-socket = 660。

2. [socket] 或 [http] 部分
listen: 设置套接字的监听队列大小。----示例:listen = 100。

buffer-size: 设置请求和响应的缓冲区大小。----示例:buffer-size = 32768。

3. [application] 部分
module: 指定 WSGI 应用的模块路径。----示例:module = myapp.wsgi:application。

callable: 指定 WSGI 应用的可调用对象名称。----示例:callable = app。

查看 uWSGI 服务进程

ps aux | grep uwsgi

 启动uWSGI服务进程 

uwsgi --ini uwsgi.ini

# 在后台运行uWSGI服务,不再在控制台打印日志
uwsgi -d --ini uwsgi.ini

 关闭uWSGI服务进程

# 通过 uwsgi.pid 文件
uwsgi --stop /path/to/uwsgi.pid


# 使用 kill 命令发送 TERM 信号
kill -TERM 12345 67890

# 使用 kill -9 强制终止进程
kill -9 12345 67890

此文章只简单记录一下uWSGI(笔记),uWSGI+Nginx 详细使用在下一篇文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值