Python 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 Flask

app = Flask(__name__)

@app.route('/')

def index():

return "I am app 1"

执行以下命令:

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

python安装-Python uWSGI 安装配置相关推荐

  1. 怎么检查python是否安装成功-检查python以及django是否安装配置成功

    首先说明下,我使用pycharm作为开发的IDE,在第一次创建django项目的时候,会自动安装django包的.(网上也有很多单独安装的方法),环境变量配置成功后,就是用下面的方法检测安装成功与否. ...

  2. 【CV】Python下载安装及环境变量配置教程

    目录 Python下载 Python安装 Python环境变量配置 Python下载 可通过https://www.python.org/downloads/下载 1.进入网页后点击Windows,其 ...

  3. uwsgi 安装报错 plugins/python/uwsgi_python.h:2:20: fatal error: Python.h: No such file or directory

    1. Python3 安装 uwsgi 报错 直接使用命令 sudo pip3 install uwsgi 安装如下错误: ubuntu@ubuntu:~/Downloads$ sudo pip3 i ...

  4. python3.6.2怎样安装,python 3.6.2 安装配置方法图文教程

    python 3.6.2 安装配置方法图文教程 Windows下Python(pip)环境搭建(3.6)图解,供大家参考,具体内容如下 1.下载最新的Python安装:3.6.2 2.安装时不要选择默 ...

  5. python解释器的安装步骤-Python本地及虚拟解释器配置过程解析

    1.准备工作 安装好Pycharm2017版本 电脑上安装好Python解释器 2.本地解释器配置 配置本地解释器的步骤相对简洁直观: (1)单击工具栏中的设置按钮. (2)在Settings/Pre ...

  6. Sublime Text 3 安装Package Control及配置Python环境

    一 .安装Package Control 代码安装:使用Ctrl+`快捷键或者通过View->Show Console菜单打开命令行,粘贴如下代码 sublime text3: import u ...

  7. windows10安装python环境_在windows10下安装python(配置环境变量),Windows10

    建议使用:anaconda(环境管理和包管理)+Pycharm (强大的IDE开发工具) python环境变量设置: window系统高级设置-> 系统环境变量里 变量名: PYTHONPATH ...

  8. python网页运行环境_Python小牛叔Web开发1:安装Visual Studio Code配置Python运行环境...

    本系列是Python小牛叔Web开发系列,以Django为框架介绍如何使用Python来开发Web应用,本教程适合对于Web开发有基本知识的入门者. 1.安装Visual Studio Code编辑器 ...

  9. 安装python应该先安装pycharm还是python_Pycharm及python安装详细步骤及PyCharm配置整理(推荐)...

    首先我们来安装python 1.首先进入网站下载:点击打开链接(或自己输入网址: https://www.python.org/downloads/),进入之后如下图,选择图中红色圈中区域进行下载. ...

最新文章

  1. linux 使用sendmail发送邮件
  2. 远观近看阿里云ET平台 如何开启AI落地新风潮
  3. C#调用dll提示试图加载格式不正确的程序解决方法
  4. C++字符串反转(C++11)
  5. ActiveMq消费端实现集群部署
  6. python 连接oracle_常用的Python库,给大家分享一下!
  7. 【codevs2287】火车站,第一个A掉的钻石题(迟来的解题报告)
  8. MapReduce job任务源码提交流程
  9. 凸优化第七章统计估计 7.5实验设计
  10. 中国99%的白领以及他们的家庭即将面临破产
  11. Magic3D(MyGUI)简单使用
  12. 世间什么才是最珍贵的?
  13. 【VulnHub靶机渗透】一:BullDog2
  14. printf 打印结构体成员函数出错原因分析
  15. MySQL获取指定日期为所在月份的第几周
  16. 景联文科技|浅谈常见的语音标注方法
  17. Hbuildx创建vue3项目
  18. 用爬虫爬取某妹子图片网站图片
  19. 基于水平投影,垂直投影的字符图像分割思路和代码实现
  20. Linux的recovery分区编译,Recovery移植之高级小白教程——Recovery的编译

热门文章

  1. Microsoft.AspNetCore.Server.Kestrel.Core.BadHttpRequestException: Request body too large
  2. Tosca 注意事项(持续更新)
  3. [Done][DUBBO] dubbo Thread pool is EXHAUSTED!
  4. 利用 Python 插件 xlwings 读写 Excel
  5. 《浪潮之巅》十八十九章笔记
  6. Effictive Java学习笔记1:创建和销毁对象
  7. 关于datetimepicker和vue v-model指令双向数据绑定失败的问题
  8. c++ 第五次作业(计算器第三步)
  9. 【精心挑选】推荐几款非常棒的 jQuery 全景图片展示插件
  10. UVA11870 Antonyms【并查集】