溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python如何安裝和配置uWSGI

發(fā)布時(shí)間:2022-07-28 13:46:58 來源:億速云 閱讀:129 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容介紹了“Python如何安裝和配置uWSGI”的有關(guān)知識,在實(shí)際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!

以 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 二進(jìn)制安裝到 /tmp/uwsgi ,你可以修改它。

3、源代碼安裝:

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

安裝完成后,在當(dāng)前目錄下,你會獲得一個(gè) uwsgi 二進(jìn)制文件。

第一個(gè) WSGI 應(yīng)用

讓我們從一個(gè)簡單的 "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 加載器將會搜索的默認(rèn)函數(shù) application 。

接下來我們啟動 uWSGI 來運(yùn)行一個(gè) HTTP 服務(wù)器,將程序部署在HTTP端口 9090 上:

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

添加并發(fā)和監(jiān)控

默認(rèn)情況下,uWSGI 啟動一個(gè)單一的進(jìn)程和一個(gè)單一的線程。

你可以用 --processes 選項(xiàng)添加更多的進(jìn)程,或者使用 --threads 選項(xiàng)添加更多的線程 ,也可以兩者同時(shí)使用。

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

以上命令將會生成 4 個(gè)進(jìn)程, 每個(gè)進(jìn)程有 2 個(gè)線程。

如果你要執(zhí)行監(jiān)控任務(wù),可以使用 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)控?cái)?shù)據(jù):

pip install uwsgitop

結(jié)合 Web 服務(wù)器使用

我們可以將 uWSGI 和 Nginx Web 服務(wù)器結(jié)合使用,實(shí)現(xiàn)更高的并發(fā)性能。

一個(gè)常用的nginx配置如下:

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

以上代碼表示使用 nginx 接收的 Web 請求傳遞給端口為 3031 的 uWSGI 服務(wù)來處理。

現(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 服務(wù)器使用 HTTP,那么你必須告訴 uWSGI 本地使用 http 協(xié)議 (這與會自己生成一個(gè)代理的–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 框架,假設(shè) Django 項(xiàng)目位于 /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 用于指定項(xiàng)目路徑。

我們可以把以上的命令弄成一個(gè) 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 是一個(gè)流行的 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”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI