2016-03-07 118 views
11

我有用Flask編寫的Web應用程序。正如大家所建議的,我不能在生產中使用Flask。所以我想到Gunicorn with Flask如何在多線程模式下使用Gunicorn運行燒瓶

在Flask應用程序中,我加載了一些機器學習模型。這些大小爲8GB。我的Web應用程序的併發性可以高達1000個請求。機器的RAM是15GB。
那麼運行此應用程序的最佳方式是什麼?

回答

20

您可以使用Gunicorn爲多名工作人員或異步工作人員啓動您的應用程序。

燒瓶server.py

from flask import Flask 
app = Flask(__name__) 

@app.route("/") 
def hello(): 
    return "Hello World!" 

if __name__ == "__main__": 
    app.run() 

Gunicorn與GEVENT異步工人

gunicorn server:app -k gevent --worker-connections 1000 

Gunicorn 1個工作者12個線程:

gunicorn server:app -w 1 --threads 12 

Gunicorn用4名工人(多處理):

gunicorn server:app -w 4 

有關Flask併發性的更多信息:How many concurrent requests does a single Flask process receive?

+1

由於模型的大小很大,有多個工作人員會拋出內存異常。我認爲每個工作人員都會將所有模型加載到不同的內存空間中 – neel

+0

您需要使用像gevent這樣的異步工作器來允許一個工作器的併發:'gunicorn -k gevent --worker-connections 1000'。 – molivier

+0

您還可以添加'--threads'來運行具有指定數量的線程的每個worker。請參閱編輯。 – molivier