11
我有用Flask編寫的Web應用程序。正如大家所建議的,我不能在生產中使用Flask。所以我想到Gunicorn with Flask。如何在多線程模式下使用Gunicorn運行燒瓶
在Flask應用程序中,我加載了一些機器學習模型。這些大小爲8GB。我的Web應用程序的併發性可以高達1000個請求。機器的RAM是15GB。
那麼運行此應用程序的最佳方式是什麼?
我有用Flask編寫的Web應用程序。正如大家所建議的,我不能在生產中使用Flask。所以我想到Gunicorn with Flask。如何在多線程模式下使用Gunicorn運行燒瓶
在Flask應用程序中,我加載了一些機器學習模型。這些大小爲8GB。我的Web應用程序的併發性可以高達1000個請求。機器的RAM是15GB。
那麼運行此應用程序的最佳方式是什麼?
您可以使用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?。
由於模型的大小很大,有多個工作人員會拋出內存異常。我認爲每個工作人員都會將所有模型加載到不同的內存空間中 – neel
您需要使用像gevent這樣的異步工作器來允許一個工作器的併發:'gunicorn -k gevent --worker-connections 1000'。 – molivier
您還可以添加'--threads'來運行具有指定數量的線程的每個worker。請參閱編輯。 – molivier