簡體   English   中英

使用Flask和Gunicorn為並發用戶服務

[英]Serve concurrent users with Flask and gunicorn

我在gunicorn服務器后面使用了flask應用程序。 我希望我的應用可以處理並發請求。 為了測試此目的,我編寫了一個小測試:

 @app.route('/test', methods=['GET'])
 def get_tasks_test():
     time.sleep(10)
     return jsonify({'test is working'})

我先用以下方法開始使用金槍魚:

gunicorn app:app本地主機:8000 --reload --worker-connections 100 --worker-class gevent

現在,我同時發送一些並發請求,並期望服務器在大約10秒內響應所有請求(由於設置了睡眠),但是服務器似乎在每個請求之間等待10秒,這駁斥了並發請求。我的意見。 我對嗎? 我應該怎么做才能使服務器處理並發?

我認為--worker-connections不是您想要的。 它正在使用被您的time.sleep time.sleep(10)阻止的gevent。

您想要的是--workers 4 ,它將打開4個worker進程。 這樣一來,您可以同時處理4個請求。 我不會像工作人員連接那樣將其設置為100,而是通常的經驗法則是2-4x the number of processor cores 因此,如果您擁有啟用了超線程的四核計算機,則可以執行32工作。

最后,您可以傳遞--threads 4以使每個進程打開4個線程來處理請求。 注意不要創建太多線程很多的進程。 這不是無限的資源。

參考文獻

http://docs.gunicorn.org/en/latest/settings.html?highlight=--worker-connections#workers

http://docs.gunicorn.org/en/stable/design.html#choosing-a-worker-type

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM