Flask程式部署 WSGI獨立容器

2022-05-06 12:57:13 字數 1482 閱讀 3765

有一些流行的伺服器用python編寫的,包含wsgi應用程式並提供http服務。這些伺服器可以獨立執行; 您可以從您的web伺服器**它們。如果遇到問題,請翻閱**安裝程式的issues。

gunicorn--'green unicorn'是執行在unix下的wsgi http伺服器,這是從ruby的獨角獸專案(unicorn project)移植的pre-fork工作模式,它支援eventlet和greenlet,在此伺服器上執行flask應用程式非常簡單:

gunicorn提供了許多命令列選項(可以使用gunicorn -h檢視)。例如,要使用4個工作程序去flask應用程式(-w 4)並繫結到本地主機埠4000(-b 127.0.0.1:4000):

gevent是乙個基於協同程式的python網路庫,它使用greenlet在libev事件迴圈基礎上提供的乙個高階別的同步api:

from gevent.wsgi import wsgiserver

http_server.serve_forever()

twisted是乙個成熟的非阻塞事件驅動的網路庫,twisted web是twisted提供的web伺服器。twisted web附帶乙個標準的wsgi容器,可以使用twistd實用程式從命令列控制:

twisted web支援許多標誌和選項,而twistd實用程式也是如此; 有關詳細資訊,請參閱twistd -h和twistd web -h。例如,要在前台執行twisted web伺服器,在埠8080上,應用程式來自myproject:

如果您想要在http**之後再使用其中乙個伺服器部署應用程式,則需要重寫幾個headers才能使應用程式正常工作。wsgi虛擬環境中兩個有問題的值通常是remote_addr和http_host。您可以通過配置httpd來傳遞這些標頭檔案,也可以在中介軟體中對他們進行修復。werkzeug發布了乙個可以解決一些常見設定的修復程式,但您可能希望為特定設定編寫自己的wsgi中介軟體。

下面這是乙個簡單的nginx配置,它**在埠8000上localhost上提供的應用程式,設定適當的標頭檔案:

server 

}

from werkzeug.contrib.fixers import proxyfix
trusting headers

請記住,在非**設定中使用這樣的中介軟體是存在安全問題的,因為它將盲目信任可能被惡意客戶端偽造的傳入標頭檔案。

如果要從另乙個標頭檔案重寫標頭檔案,可能需要使用如下的修補程式:

利用 WSGI 模組執行 Flask 生成的網頁

但是,如果你的網頁是通過 flask 動態生成的,那你就不能通過上述方式實現跨裝置訪問網頁了。這時候你可以使用wsgi 模組。參考文章 running flask on macos with mod wsgi wsgi express 具體操作如下 當你在使用 flask 模組時,官網教程就要求你使...

Django中Nginx和WSGI部署系列之十七

當專案開發完成後,需要將專案 放到伺服器上,這個伺服器擁有固定的ip,再通過網域名稱繫結,就可以供其它人瀏覽,對於python web開發,可以使用wsgi apache伺服器。伺服器首先是物理上的一台效能高 線路全 執行穩定的機器,分為私有伺服器 公有伺服器。私有伺服器 公司自己購買 自己維護,只...

flask多程序,多執行緒部署介面程式

flask是一種方便快捷輕量級部署介面程式的工具,輕量級伺服器架構,可以方便部署乙個restful介面程式,供別人呼叫。1 首先匯入相應的包 from flask import flask,request2 給提供介面服務的函式加上修飾 def func pass if name main 除此之外...