flask 執行時阻塞

2022-05-26 01:06:08 字數 827 閱讀 5965

之前並沒有研究過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 120

0.0.0.0:1234

0.0.0.0:* listen 17051/python

2、索性就測試了一下flask的阻塞情況

@api.route('/'

)#@auth.login_required

defindex():

import

time

time.sleep(15)

return

同時執行了兩個請求,上面這個先執行,後面在執行乙個不同的請求,就會先等上面這個15秒的執行完了才會執行另乙個不同的介面。

3、然後修改主程式

1)增加gevent

2)啟動的時候開啟多執行緒 

nohup python manage.py runserver -d -r -h 0.0.0.0 -p 9527 --threaded &

Tokio 非阻塞關閉執行時

參考 shutdown background方法可以立即關閉執行時,不會產生阻塞。通常在另乙個執行時中呼叫,避免阻塞。由於shutdown background不等待任務結束,可能會產生資源洩露。use std use tokio runtime runtime fn main io result ...

執行時異常

常見的幾種如下 nullpointerexception 空指標引用異常 classcastexception 型別強制轉換異常。illegalargumentexception 傳遞非法引數異常。arithmeticexception 算術運算異常 arraystoreexception 向陣列中...

flask和django的執行時間比較

flask和django的執行時間比較 flask介面 from flask import flask,request import json defadd args a,b return a b get tasks methods post defget tasks if request.meth...