python初级教程十二 uWSGI 安装配置

news/2024/12/28 20:06:32/

uWSGI 安装配置

本文主要介绍如何部署简单的 WSGI 应用和常见的 Web 框架。

以 Ubuntu/Debian 为例,先安装依赖包:

apt-get install build-essential python-dev

Python 安装 uWSGI

1、通过 pip 命令:

pip install uwsgi

2、下载安装脚本:

curl http://uwsgi.it/install | bash -s default /tmp/uwsgi

将 uWSGI 二进制安装到 /tmp/uwsgi ,你可以修改它。

3、源代码安装:

wget http://projects.unbit.it/downloads/uwsgi-latest.tar.gz
tar zxvf uwsgi-latest.tar.gz
cd uwsgi-latest
make

安装完成后,在当前目录下,你会获得一个 uwsgi 二进制文件。

第一个 WSGI 应用

让我们从一个简单的 “Hello World” 开始,创建文件 foobar.py,代码如下:

def application(env, start_response):start_response('200 OK', [('Content-Type','text/html')])return [b"Hello World"]

uWSGI Python 加载器将会搜索的默认函数 application 。

接下来我们启动 uWSGI 来运行一个 HTTP 服务器,将程序部署在HTTP端口 9090 上:

uwsgi --http :9090 --wsgi-file foobar.py

添加并发和监控

默认情况下,uWSGI 启动一个单一的进程和一个单一的线程。

你可以用 --processes 选项添加更多的进程,或者使用 --threads 选项添加更多的线程 ,也可以两者同时使用。

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2

以上命令将会生成 4 个进程, 每个进程有 2 个线程。

如果你要执行监控任务,可以使用 stats 子系统,监控的数据格式是 JSON:

uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

我们可以安装 uwsgitop(类似 Linux top 命令) 来查看监控数据:

pip install uwsgitop

结合 Web 服务器使用

我们可以将 uWSGI 和 Nginx Web 服务器结合使用,实现更高的并发性能。

一个常用的nginx配置如下:

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

以上代码表示使用 nginx 接收的 Web 请求传递给端口为 3031 的 uWSGI 服务来处理。

现在,我们可以生成 uWSGI 来本地使用 uwsgi 协议:

uwsgi --socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

如果你的 Web 服务器使用 HTTP,那么你必须告诉 uWSGI 本地使用 http 协议 (这与会自己生成一个代理的–http不同):

uwsgi --http-socket 127.0.0.1:3031 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

部署 Django

Django 是最常使用的 Python web 框架,假设 Django 项目位于 /home/foobar/myproject:

uwsgi --socket 127.0.0.1:3031 --chdir /home/foobar/myproject/ --wsgi-file myproject/wsgi.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191

–chdir 用于指定项目路径。

我们可以把以上的命令弄成一个 yourfile.ini 配置文件:

[uwsgi]
socket = 127.0.0.1:3031
chdir = /home/foobar/myproject/
wsgi-file = myproject/wsgi.py
processes = 4
threads = 2
stats = 127.0.0.1:9191

接下来你只需要执行以下命令即可:

uwsgi yourfile.ini

部署 Flask

Flask 是一个流行的 Python web 框架。

创建文件 myflaskapp.py ,代码如下:

from flask import Flaskapp = Flask(__name__)@app.route('/')
def index():return "<span style='color:red'>I am app 1</span>"

执行以下命令:

uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191


http://www.ppmy.cn/news/10657.html

相关文章

网易云MUSIC年终奖0.5?听到消息我扔了耳机

一、百度 1.MEG开始突然抓考勤&#xff0c;多个团队口头通知&#xff0c;要求早上10点之前到公司。同时工作日下班免费打车的时间将从9点改成10点&#xff0c;预计本周开始实行&#xff0c;这意味着“早十晚十”成为了公司倡导的主旋律。没错&#xff0c;为什么要有下班呢&…

基于K8s的DevOps平台实践(三)

文章目录前言1. Jenkins与k8s集成&#x1f351; 插件安装及配置&#x1f351; 演示动态slave pod&#x1f351; Pod-Template中容器镜像的制作&#x1f351; 实践通过Jenkinsfile实现demo项目自动发布到kubenetes环境2. Jenkins集成Sonarqube&#x1f351; sonarqube架构简介&a…

基于Promethus+Grafana搭建监控系统

简介 ● 监测数据类型&#xff1a;JVM数据、在线人数、消息时延等 ● 接入Prometheus性能监测工具&#xff0c;暴露服务器性能监测数据 ○ 模式&#xff1a;pull/push ● 接入Grafana可视化数据 搭建流程 准备环境 Java客户端配置 <!-- The client --> <depende…

模拟实现list和vector反向迭代器

学习这部分知识&#xff0c;需要你了解vector和list的正向迭代器知识以及容器适配器知识&#xff0c;可以阅读我写的另外三篇vector、list、容器适配器 知识的博客&#xff01;其中list知识内容尤其重要且难度要求很高&#xff01; 反向迭代器&#xff0c;顾名思义是与正向迭代…

【Python】基于高德地图API的坐标转换函数

【Python】基于高德地图API的坐标转换函数 API申请&#xff1a; lbs.amap.com/api/webservice/guide/api/convert/产品介绍 坐标转换是一类简单的HTTP接口&#xff0c;能够将用户输入的非高德坐标&#xff08;GPS坐标、mapbar坐标、baidu坐标&#xff09;转换成高德坐标。 …

[Linux]Linux调试器-gdb

&#x1f941;作者&#xff1a; 华丞臧. &#x1f4d5;​​​​专栏&#xff1a;【LINUX】 各位读者老爷如果觉得博主写的不错&#xff0c;请诸位多多支持(点赞收藏关注)。如果有错误的地方&#xff0c;欢迎在评论区指出。 推荐一款刷题网站 &#x1f449; LeetCode刷题网站 文…

智引未来,深兰科技机器人家族首次亮相TechG

12月31日&#xff0c;首届上海国际消费电子技术展(简称TechG)在南京国际博览中心圆满落下帷幕。作为全球消费电子技术领域的顶级行业盛会&#xff0c;本届展会共吸引了来自全球的300余家企业出席&#xff0c;共计逾2万名专业人士到场参观。阿里巴巴、蚂蚁科技、海尔、科大讯飞、…

基于Android的课堂评分系统

需求信息&#xff1a; 管理员 1&#xff1a;登录 2&#xff1a;学生教师课程管理&#xff0c;可以增加 教师 1&#xff1a;登录 2&#xff1a;选择要上课的学生&#xff0c;设置该课程成绩比例 3&#xff1a;出勤管理 请假-2&#xff0c;旷课-3&#xff0c;迟到早退-1 4&#x…