**
官方其實已經給出了方案,只不過藏的有點深,在加上網上有很多不太靠譜的帖子誤導了我(當然不排除我沒理解的原因哈)。所以為了讓有些朋友的少走點彎路,也為給自己做個備忘。
解決方案: flask+gevent
安裝gevent
pip install gevent
修改**
執行之後可以先訪問/asyn/1/再訪問/test/,可以明顯發現,/asyn/1/在做耗時任務時不會影響其他請求#coding=utf-8
from flask import flask, request
import time
# 檔案頭部
from gevent import monkey
from gevent.pywsgi import wsgiserver
# 在玩websockets,可以無視之哈,有空貼下flask websockets實現哈
# from geventwebsocket.handler import websockethandler
import time
# gevent的猴子魔法
monkey.patch_all()
debug=true
)def
test_asyn_one
():if request.method == 'get':
time.sleep(10)
return
'hello asyn'
deftest
():return
'hello test'
if __name__ == "__main__":
http_server.serve_forever()
IO模式 同步(堵塞 非堵塞) 非同步
為什麼io模式非常重要?由於現代的計算機和作業系統的架構決定了cpu是稀缺資源,大家都要來一起競爭。而io 特別是網路相關的io 的速度往往較慢。所以怎樣進行io就有了多種模式,包含同步 非同步 堵塞 非堵塞等等。不少人把這幾個概念放到一起討論,非常多時候也難以區分。這裡從根上剖析下該怎麼看待這幾個...
也談堵塞 非堵塞 同步 非同步
近期在招聘中,發現不少人對bio nio aio等理解非常模糊,認為有必要寫文章來糾正下非常多人的誤解。在談這些之前,非常有必要先介紹下unix 5種io模型 堵塞 堵塞是最經常使用的io模型,預設情況下全部的檔案操作都是堵塞的。以套接字程式設計為例。在程序空間中呼叫recvfrom。其系統呼叫直到...
php socket 同步非同步堵塞非堵塞的區別
php socket 同步非同步堵塞非堵塞的區別 從accept接受資料開始 同步就是 服務端從客戶端接受完資料 處理 然後傳送給客戶端了 然後再開始接收新的客戶端發來的資料 非同步就是 服務端從客戶端接受完資料 就可以再次繼續接收 非同步處理資料 堵塞就是 服務端堵塞執行緒狀態接收資料 read ...