之前並沒有研究過flask在大量不同請求的情況下請求的處理機制,最近發現自己的一個監控系統的Recv-Q 堆積過多,然后看了一下是程序的處理能力的問題。
1、看見服務器Recv-Q較多,消費不及時
[root@iZbp1ftexcphcvhbglvmz8Z ~]# netstat -tnlp Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 12 0 0.0.0.0:1234 0.0.0.0:* LISTEN 17051/python
2、索性就測試了一下flask的阻塞情況
@api.route('/') #@auth.login_required def index(): import time time.sleep(15) return { print("hello world") }
同時執行了兩個請求,上面這個先執行,后面在執行一個不同的請求,就會先等上面這個15秒的執行完了才會執行另一個不同的接口。
3、然后修改主程序
1)增加gevent
2)啟動的時候開啟多線程
nohup python manage.py runserver -d -r -h 0.0.0.0 -p 9527 --threaded &
