創(chuàng)新互聯(lián)www.cdcxhl.cn八線動態(tài)BGP香港云服務器提供商,新人活動買多久送多久,劃算不套路!
專注于為中小企業(yè)提供網(wǎng)站建設、成都網(wǎng)站設計服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)西工免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。這篇文章主要介紹flask框架的案例分析,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
flask是一個web框架
從客戶端發(fā)向服務器的請求和服務器處理請求是的線程之間是什么關系?
比如發(fā)起10個請求,那么flask開啟多少個線程來處理請求?(描述不夠精確)
flask是不會開啟線程的,那么線程是誰來開啟的呢?
其實是由webserver,外部服務器開啟的,我們的flask框架或者寫的項目代碼,如果沒有外部服務器是無法運行的,如果要讓項目跑起來的話,必須要有一個webserver, 所以說,我們看到的flask中的app.run()就是啟動flask中自帶的內(nèi)置的webserver,如果我們要把代碼部署到生產(chǎn)環(huán)境中去,真實的給用戶使用的話,一般的是不會使用flask自帶的webserver的,而是選擇另外的webserver部署flask的代碼。
默認的情況下,flask自帶的web服務器是以單進程單線程來響應我們的客戶端請求。大家很容易想到,10個請求進來是沒有辦法同事執(zhí)行的,已給請求執(zhí)行完之后才能執(zhí)行另一個請求。當然,flask自帶的web服務器也可以開啟多線程或者多進程模式??梢栽趐ycharm中看到。
from app import create_app app = create_app()if __name__ == '__main__': # print('id為' + str(id(app)) + '啟動') app.run(host='0.0.0.0', debug=True) # 單進程單線程 app.run(host='0.0.0.0', debug=True, threadad=True) # 單進程多線程,進程默認為1 app.run(host='0.0.0.0', debug=True, threadad=True, processes=2) # 多進程多線程,進程processes默認為1
對于一個網(wǎng)站而言,必須要有一定的承受并發(fā)的能力,request只是一個變量名,真正的實例對象是Request()。同一時刻會有多個請求,而每一個請求的請求信息極有可能是不同的。這就會造成我們實際發(fā)送過來的請求信息是不相同的。那么用一個變量request怎么代表不同用戶的請求信息呢?
由于單線程是順序執(zhí)行的,只有處理完一個請求才能處理另一個請求,對于單線程來說,請求就像排隊一樣,請求進來之后,flask會實例化一個Request對象,然后用request來裝載我們的請求信息,這個時候我們只有一個實例化的Request,所以啊,用request變量名是可以拿到我們要的請求信息的,所以request變量名總是會指向當前的請求,request就不會出現(xiàn)混亂。
多線程的請求,(對象是保存狀態(tài)的地方)
怎么解決呢,我們自己想一想,
request1 = Request() request2 = Request() request3 = Request()
線程里有什么可以唯一確定一個線程呢,那就是線程的id號,可以作為key,在flask中就是采用的這種原理來解決的,這種用不同id號作為鍵,其實就是線程隔離,線程隔離只是一種思想,并不一定都是用字典實現(xiàn),還可以用其他的方式實現(xiàn)。
以上是“flask框架的案例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關知識,歡迎關注創(chuàng)新互聯(lián)-成都網(wǎng)站建設公司行業(yè)資訊頻道!
本文名稱:flask框架的案例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://jinyejixie.com/article26/dippjg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設計、Google、關鍵詞優(yōu)化、響應式網(wǎng)站、網(wǎng)站設計公司、網(wǎng)站策劃
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容