網(wǎng)站首頁 編程語言 正文
本文主要介紹如何部署簡(jiǎn)單的 WSGI 應(yīng)用和常見的 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 二進(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)前目錄下,你會(huì)獲得一個(gè) uwsgi 二進(jìn)制文件。
第一個(gè) WSGI 應(yīng)用
讓我們從一個(gè)簡(jiǎn)單的 "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 加載器將會(huì)搜索的默認(rèn)函數(shù)?application?。
接下來我們啟動(dòng) uWSGI 來運(yùn)行一個(gè) HTTP 服務(wù)器,將程序部署在HTTP端口 9090 上:
uwsgi --http :9090 --wsgi-file foobar.py
添加并發(fā)和監(jiān)控
默認(rèn)情況下,uWSGI 啟動(dòng)一個(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
以上命令將會(huì)生成 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 請(qǐng)求傳遞給端口為 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é)議 (這與會(huì)自己生成一個(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
原文鏈接:https://blog.csdn.net/unbelievevc/article/details/126007305
相關(guān)推薦
- 2022-12-29 基于R語言時(shí)間序列的平穩(wěn)時(shí)間序列模型預(yù)測(cè)圖文詳解_R語言
- 2022-12-13 python辦公自動(dòng)化(Excel)的實(shí)例教程_python
- 2022-05-23 單點(diǎn)登錄之cas集成sonar的配置方法_相關(guān)技巧
- 2022-06-01 Kubernetes集群的組成介紹_云和虛擬化
- 2022-03-17 Docker容器之間的通信的方法實(shí)現(xiàn)_docker
- 2022-12-11 Flow如何解決背壓?jiǎn)栴}的方法詳解_Android
- 2022-04-04 scrapy框架中用ssh連接遠(yuǎn)程服務(wù)器的實(shí)現(xiàn)_python
- 2022-04-19 C語言內(nèi)存管理及初始化細(xì)節(jié)示例詳解_C 語言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支