flask中gunicorn的使用


最近模型部署用flask給接口,模型實驗室的部署流程中需用gunicorn來部署flask服務。為什么要用gunicorn呢,簡單點就是為了並發。

1、模塊安裝

pip install flask
pip install gunicorn

2、用flask寫一個簡單的web服務

# main.py

from
flask import Flask app = Flask(__name__) @app.route('/') def index(): return 'hello world' def main(): app.run(debug=True) if __name__ == '__main__': main()

3、啟動

  我們知道直接運行main.py函數就可以啟動flask服務,但是我們這里要用gunicorn,也很簡單

gunicorn main:app
  • main是flask的啟動python文件,我們這是main.py,
  • app則是flask應用程序實例,我們mian.py里實例名為app
這樣運行的話, gunicorn 默認作為一個監聽 127.0.0.1:8000 的web server,可以在本機通過: http://127.0.0.1:8000 訪問。

 如果要通過網絡訪問,則需要綁定不同的地址(也可以同時設置監聽端口),設置0.0.0.0可以監聽到所有ip的請求:

gunicorn -b 0.0.0.0:8080 main:app

在多核服務器上,為了支持更多的並發訪問並充分利用資源,可以使用更多的 gunicorn 進程:

gunicorn -w 4 -b 0.0.0.0:8080 main:app
  • -b 表示 gunicorn 開發的訪問地址 
  • -w 表示工作進程數

4、配置文件

  通過gunicorn -h可以看到gunicorn有非常多的配置項,因此通常會寫成一個配置文件來進行配置。

  比如我這邊寫成gunicorn.conf文件

# gunicorn.conf

bind = "0.0.0.0:5000"
workers = 4
backlog = 2048
pidfile = "log/gunicorn.pid"
accesslog = "log/access.log"
errorlog = "log/debug.log"
timeout = 600
debug=False
capture_output = True

debug=False: 生產環境不用這個配置項,但調試的時候debug=True還是挺好用的。而且,開啟debug項后,在啟動gunicorn的時候可以看到所有可配置項的配置

注意上面log項,如果需要將這些log文件統一放到log文件夾下,事先要先建好,不然運行時會報錯。

運行代碼為:

gunicorn --config gunicorn.conf main:app

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM