2016-03-07 15 views
11

Tôi có ứng dụng web được viết bằng Flask. Theo đề nghị của tất cả mọi người, tôi không thể sử dụng Flask trong sản xuất. Vì vậy, tôi nghĩ về Gunicorn với Flask.Làm thế nào để chạy Flask với Gunicorn ở chế độ đa luồng

Trong ứng dụng Flask, tôi đang tải một số mẫu Máy học. Đây là những kích thước 8GB chung. Đồng thời ứng dụng web của tôi có thể tối đa 1000 yêu cầu. Và RAM của máy là 15GB.
Vậy cách tốt nhất để chạy ứng dụng này là gì?

Trả lời

20

Bạn có thể khởi động ứng dụng của mình với nhiều công nhân hoặc nhân viên không đồng bộ với Gunicorn.

Flask server.py

from flask import Flask 
app = Flask(__name__) 

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

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

Gunicorn với người lao động gevent async

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

Gunicorn 1 công nhân 12 luồng:

gunicorn server:app -w 1 --threads 12 

Gunicorn với 4 công nhân (đa):

gunicorn server:app -w 4 

Thông tin thêm về Flask concurrency trong bài đăng này: How many concurrent requests does a single Flask process receive?.

+1

Với nhiều người lao động, việc loại bỏ bộ nhớ ngoại lệ là kích thước của các mô hình lớn. Tôi nghĩ rằng với mỗi công nhân, nó sẽ tải tất cả các mô hình trong không gian bộ nhớ khác nhau – neel

+0

Bạn cần sử dụng công nhân không đồng bộ như gevent để cho phép đồng thời với một nhân viên: 'gunicorn -k gevent --worker-connections 1000'. – molivier

+0

Bạn cũng có thể thêm '--threads' để chạy mỗi công nhân với số lượng chủ đề đã chỉ định. Xem Chỉnh sửa. – molivier

Các vấn đề liên quan