1. 程式人生 > >使用flask開發RESTful架構的api伺服器端–部署flask應用到nginx

使用flask開發RESTful架構的api伺服器端–部署flask應用到nginx

原文地址:http://www.mrhaoting.com/?p=199

通過前幾章的介紹,大概瞭解了怎樣利用flask框架來開發服務端後端,但flask只是一個web框架,提供使用者便捷的開發方式,它並不是一個真正的web伺服器程式,想要這個服務端應用能夠支援高併發、高效能的訪問,還是需要將flask應用部署到真正的web伺服器上,nginx就是起到這個作用的,想要將flask和nginx聯合起來,需要一個叫wsgi的中介軟體,這裡選擇gunicorn來進行這個工作,下面進行這幾個名詞的解釋;

nginx:一個高效能的http和反向代理伺服器,在高併發方面有良好的表現;

wsgi:全稱是web server gateway interface,它是伺服器程式和應用程式之間的一個約定,它規定了兩者各實現什麼功能,以便它們能夠配合使用,作為中介軟體粘合伺服器程式和應用程式;

gunicorn:一個開源的全python實現的wsgi程式,在效能和功能上的表現都很不錯,很便於開發;

安裝gunicorn

簡單的使用pip命令即可安裝了:

1pip install gunicorn

例如這時你的flask程式檔案為run.py,則使用gunicorn來執行flask的命令為:

1 gunicorn-b127.0.0.1:12345run:app

其中-b為監聽的ip和埠,run為檔名,app為建立的flask物件的名稱,另外gunicorn預設使用同步阻塞的網路模型,可用通過配置來進行修改:

1gunicorn-kgevent-b127.0.0.1
:12345run:app

可以通過ps檢視gunicorn的執行情況:

QQ圖片20150308191530

gunicorn與nginx類似採用多程序模式,一個master程序和多個worker程序協同工作,可以根據自己的cpu數進行配置使用–worker選項

接下來是將gunicorn與nginx進行對接,可以使用nginx的代理功能,將http請求代理到gunicorn的監聽埠上來,在nginx的配置檔案中新增:

1 2 3 4 5 6 7 8 9 10 11 server{ ...... location/{ proxy_set_headerX-Forwarded-For$proxy_add_x_forwarded_for
; proxy_set_header Host$http_host; proxy_redirect off; proxy_pass http://127.0.0.1:12345; } ...... }

如此一個簡單的服務端架構就搭建好了,之後就是不斷的豐富它的內容,和優化它的效能了。