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" 開始,創(chuàng)建文件 foobar.py,代碼如下:
def application(env, start_response): start_response('200 OK', [('Content-Type','text/html')]) return [b"Hello World"]
uWSGI Python 加載器將會搜索的默認函數(shù) application 。
接下來我們啟動 uWSGI 來運行一個 HTTP 服務器,將程序部署在HTTP端口 9090 上:
uwsgi --http :9090 --wsgi-file foobar.py
添加并發(fā)和監(jiān)控
默認情況下,uWSGI 啟動一個單一的進程和一個單一的線程。
你可以用 --processes 選項添加更多的進程,或者使用 --threads 選項添加更多的線程 ,也可以兩者同時使用。
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2
以上命令將會生成 4 個進程, 每個進程有 2 個線程。
如果你要執(zhí)行監(jiān)控任務,可以使用 stats 子系統(tǒng),監(jiān)控的數(shù)據(jù)格式是 JSON:
uwsgi --http :9090 --wsgi-file foobar.py --master --processes 4 --threads 2 --stats 127.0.0.1:9191
我們可以安裝 uwsgitop(類似 Linux top 命令) 來查看監(jiān)控數(shù)據(jù):
pip install uwsgitop
結(jié)合 Web 服務器使用
我們可以將 uWSGI 和 Nginx Web 服務器結(jié)合使用,實現(xiàn)更高的并發(fā)性能。
一個常用的nginx配置如下:
location / { include uwsgi_params; uwsgi_pass 127.0.0.1:3031; }
以上代碼表示使用 nginx 接收的 Web 請求傳遞給端口為 3031 的 uWSGI 服務來處理。
現(xiàn)在,我們可以生成 uWSGI 來本地使用 uwsgi 協(xié)議:
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 協(xié)議 (這與會自己生成一個代理的–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
接下來你只需要執(zhí)行以下命令即可:
uwsgi yourfile.ini
部署 Flask
Flask 是一個流行的 Python web 框架。
創(chuàng)建文件 myflaskapp.py ,代碼如下:
from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "<span style='color:red'>I am app 1</span>"
執(zhí)行以下命令:
uwsgi --socket 127.0.0.1:3031 --wsgi-file myflaskapp.py --callable app --processes 4 --threads 2 --stats 127.0.0.1:9191
到此這篇關于Python uWSGI 安裝配置的文章就介紹到這了,更多相關Python uWSGI 安裝配置內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
- Python?Web開發(fā)通信協(xié)議WSGI?uWSGI?uwsgi使用對比全面介紹
- 通過Python中的CGI接口講解什么是WSGI
- django生產(chǎn)環(huán)境搭建(uWSGI+django+nginx+python+MySQL)
- Python WSGI 規(guī)范簡介
- 淺析Python 中的 WSGI 接口和 WSGI 服務的運行
- Docker構(gòu)建python Flask+ nginx+uwsgi容器
- python web框架 django wsgi原理解析
- Python開發(fā)之Nginx+uWSGI+virtualenv多項目部署教程
- Python從wsgi導入失敗的問題解決方法
相關文章
python單線程下實現(xiàn)多個socket并發(fā)過程詳解
這篇文章主要介紹了python單線程下實現(xiàn)多個socket并發(fā)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2019-07-07python實現(xiàn)統(tǒng)計代碼行數(shù)的方法
這篇文章主要介紹了python實現(xiàn)統(tǒng)計代碼行數(shù)的方法,涉及Python中os模塊及codecs模塊的相關使用技巧,需要的朋友可以參考下2015-05-05總結(jié)python實現(xiàn)父類調(diào)用兩種方法的不同
最近在工作中實現(xiàn)父類調(diào)用的時候發(fā)現(xiàn)了一個錯誤,然后通過分析實踐總結(jié)出來了,下面這篇文章主要給大家總結(jié)了python中實現(xiàn)父類調(diào)用兩種方法的不同之處,需要的朋友可以參考借鑒,下面來一起看看吧。2017-01-01Python基于Hypothesis測試庫生成測試數(shù)據(jù)
這篇文章主要介紹了Python基于Hypothesis測試庫生成測試數(shù)據(jù),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04Python HTML解析器BeautifulSoup用法實例詳解【爬蟲解析器】
這篇文章主要介紹了Python HTML解析器BeautifulSoup用法,結(jié)合實例形式詳細分析了第三方庫BeautifulSoup實現(xiàn)的爬蟲解析器功能具體操作技巧,需要的朋友可以參考下2019-04-04