1 簡介
這是我的系列教程Python+Dash快速web應(yīng)用開發(fā)的第二十期。在上一期中,我介紹了如何通過內(nèi)網(wǎng)穿透的方式,將任何可以聯(lián)網(wǎng)的電腦作為“服務(wù)器”臨時(shí)發(fā)布你的Dash
應(yīng)用。
然而,內(nèi)網(wǎng)穿透作為一種臨時(shí)展示的Dash
應(yīng)用發(fā)布方式,存在諸多局限性,尤其是在性能方面。對于較為正式的Dash
應(yīng)用,我們需要配合具有生產(chǎn)級別性能的web服務(wù)器進(jìn)行發(fā)布。今天,我將介紹在windows
和linux
系統(tǒng)下,如何簡單快速地發(fā)布你的Dash
應(yīng)用,適用于云服務(wù)器與局域網(wǎng)環(huán)境。
圖1
2 利用waitress在windows中發(fā)布Dash應(yīng)用
立即進(jìn)入“豆包AI人工智官網(wǎng)入口”;
立即學(xué)習(xí)“豆包AI人工智能在線問答入口”;
首先,我們來介紹在windows
中快速發(fā)布Dash
應(yīng)用的方式。我們需要用到waitress
,這是一個(gè)可以在windows
和unix
系統(tǒng)中運(yùn)行的具有生產(chǎn)級別性能的WSGI服務(wù)器。由于Dash
是基于Flask
的,因此配合waitress
發(fā)布非常方便。
在使用pip install waitress
完成安裝后,我們主要有兩種方式發(fā)布Dash
應(yīng)用:
方式一
第一種方式非常簡單,是通過命令行進(jìn)行發(fā)布。我們以項(xiàng)目結(jié)構(gòu)篇中搭建的七普數(shù)據(jù)看板項(xiàng)目為例,在app.py
的同級目錄啟動終端,執(zhí)行下列命令:
waitress-serve --port=8888 app:app.server
這樣,我們就啟動了URL為本地ipv4地址:8888
或公網(wǎng)ip地址:8888
的Dash
應(yīng)用。其中本地ipv4
地址可以通過在終端執(zhí)行ipconfig
來查看:
圖2
因此,局域網(wǎng)內(nèi)的任何設(shè)備都可以通過訪問上述URL來使用我們發(fā)布的Dash
應(yīng)用(例如同一WIFI下的所有設(shè)備,同一內(nèi)網(wǎng)下的所有寬帶連接的設(shè)備):
圖3
如果你需要通過windows
云服務(wù)器向外網(wǎng)發(fā)布Dash
應(yīng)用,類似的訪問時(shí)只需將IP部分替換為公網(wǎng)IP即可。
方式二
雖然waitress-server
命令行的方式簡單,但它只是一種簡單需求下的快捷方式。實(shí)際上,waitress
設(shè)計(jì)了很多功能參數(shù),并可配合PasteDeploy
和logging
等其他庫來打印和記錄日志等增廣功能。這時(shí),我們需要使用另一種方式。
推薦的方式是在app.py
同級目錄建立wsgi.py
文件,然后在其中配置waitress
服務(wù)的相關(guān)參數(shù)。例如,上文中命令行的等價(jià)方式是:
from waitress import serve from app import app serve( app.server, port=8888 )
接著在終端執(zhí)行python wsgi.py
即可。而關(guān)于serve()
的更多參數(shù),以及如何打印或記錄日志信息,可以參考官網(wǎng)文檔https://docs.pylonsproject.org/projects/waitress/en/latest/arguments.html
和https://docs.pylonsproject.org/projects/waitress/en/latest/logging.html
。
3 利用gunicorn在linux中發(fā)布Dash應(yīng)用
當(dāng)你的服務(wù)器為linux
系統(tǒng)時(shí),我們有更好的web服務(wù)器選擇——gunicorn
。它移植自Ruby
的Unicorn
項(xiàng)目,是一個(gè)兼具簡單易用、輕量高效特點(diǎn)的非常流行的WSGI服務(wù)器,但只能運(yùn)行于Unix
系統(tǒng)中,因此前面介紹windows
系統(tǒng)部署方法時(shí)沒有提到它。
使用gunicorn
來發(fā)布Dash
應(yīng)用也非常簡單高效,例如dash-bootstrap-components
的官網(wǎng)文檔就使用它進(jìn)行發(fā)布。
同樣,利用pip install gunicorn
完成安裝后,只需一行命令我們就可以架起Dash
應(yīng)用。與上文waitress
略有不同的是,我們需要在app.py
中對server.py
中的server
對象進(jìn)行導(dǎo)入,接著再執(zhí)行下列gunicorn
命令:
gunicorn -w 4 -b 0.0.0.0:8888 app:server
這樣,我們就成功地在linux
服務(wù)器上發(fā)布了Dash
應(yīng)用,同樣可以通過公網(wǎng)和局域網(wǎng)IP進(jìn)行訪問,其中-w
參數(shù)用于指定開啟指定數(shù)量的進(jìn)程來提高應(yīng)用的并發(fā)性能。
圖4
配合nohup
我們可以輕松地將gunicorn
命令置于后臺執(zhí)行,不會阻塞終端,如:
nohup gunicorn -w 4 -b 0.0.0.0:8888 app:server &
如果想要關(guān)閉后臺運(yùn)行在某個(gè)端口號下的所有gunicorn
進(jìn)程,執(zhí)行kill $(lsof -i:端口號|awk '{if(NR==2)print $2}')
命令即可一步到位。
同樣地,gunicorn
也擁有很多功能參數(shù),常用的有--access-logfile
來指定向外書寫日志文件,-t
用于設(shè)定請求的超時(shí)秒數(shù)閾值,默認(rèn)為30秒。當(dāng)你的Dash
應(yīng)用某個(gè)回調(diào)執(zhí)行的計(jì)算時(shí)間很長時(shí),請務(wù)必記住手動設(shè)置提升該參數(shù)的數(shù)值。
更多有關(guān)gunicorn
的內(nèi)容見官網(wǎng)https://docs.gunicorn.org/en/latest/index.html
。
以上就是(數(shù)據(jù)科學(xué)學(xué)習(xí)手札123)Python+Dash快速web應(yīng)用開發(fā)——部署發(fā)布篇的詳細(xì)內(nèi)容,更多請關(guān)注php中文網(wǎng)其它相關(guān)文章!
每個(gè)人都需要一臺速度更快、更穩(wěn)定的 PC。隨著時(shí)間的推移,垃圾文件、舊注冊表數(shù)據(jù)和不必要的后臺進(jìn)程會占用資源并降低性能。幸運(yùn)的是,許多工具可以讓 Windows 保持平穩(wěn)運(yùn)行。
微信掃碼
關(guān)注PHP中文網(wǎng)服務(wù)號
QQ掃碼
加入技術(shù)交流群
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號