flask框架的案例分析-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

專注于為中小企業(yè)提供網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)西工免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了上千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

這篇文章主要介紹flask框架的案例分析,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

flask是一個(gè)web框架

從客戶端發(fā)向服務(wù)器的請(qǐng)求和服務(wù)器處理請(qǐng)求是的線程之間是什么關(guān)系?

比如發(fā)起10個(gè)請(qǐng)求,那么flask開啟多少個(gè)線程來(lái)處理請(qǐng)求?(描述不夠精確)

flask是不會(huì)開啟線程的,那么線程是誰(shuí)來(lái)開啟的呢?

其實(shí)是由webserver,外部服務(wù)器開啟的,我們的flask框架或者寫的項(xiàng)目代碼,如果沒有外部服務(wù)器是無(wú)法運(yùn)行的,如果要讓項(xiàng)目跑起來(lái)的話,必須要有一個(gè)webserver, 所以說,我們看到的flask中的app.run()就是啟動(dòng)flask中自帶的內(nèi)置的webserver,如果我們要把代碼部署到生產(chǎn)環(huán)境中去,真實(shí)的給用戶使用的話,一般的是不會(huì)使用flask自帶的webserver的,而是選擇另外的webserver部署flask的代碼。

默認(rèn)的情況下,flask自帶的web服務(wù)器是以單進(jìn)程單線程來(lái)響應(yīng)我們的客戶端請(qǐng)求。大家很容易想到,10個(gè)請(qǐng)求進(jìn)來(lái)是沒有辦法同事執(zhí)行的,已給請(qǐng)求執(zhí)行完之后才能執(zhí)行另一個(gè)請(qǐng)求。當(dāng)然,flask自帶的web服務(wù)器也可以開啟多線程或者多進(jìn)程模式??梢栽趐ycharm中看到。

from app import create_app

app = create_app()if __name__ == '__main__':    # print('id為' + str(id(app)) + '啟動(dòng)')

    app.run(host='0.0.0.0', debug=True)  # 單進(jìn)程單線程

    app.run(host='0.0.0.0', debug=True, threadad=True)  # 單進(jìn)程多線程,進(jìn)程默認(rèn)為1

    app.run(host='0.0.0.0', debug=True, threadad=True, processes=2)  # 多進(jìn)程多線程,進(jìn)程processes默認(rèn)為1

對(duì)于一個(gè)網(wǎng)站而言,必須要有一定的承受并發(fā)的能力,request只是一個(gè)變量名,真正的實(shí)例對(duì)象是Request()。同一時(shí)刻會(huì)有多個(gè)請(qǐng)求,而每一個(gè)請(qǐng)求的請(qǐng)求信息極有可能是不同的。這就會(huì)造成我們實(shí)際發(fā)送過來(lái)的請(qǐng)求信息是不相同的。那么用一個(gè)變量request怎么代表不同用戶的請(qǐng)求信息呢?

flask框架的案例分析

由于單線程是順序執(zhí)行的,只有處理完一個(gè)請(qǐng)求才能處理另一個(gè)請(qǐng)求,對(duì)于單線程來(lái)說,請(qǐng)求就像排隊(duì)一樣,請(qǐng)求進(jìn)來(lái)之后,flask會(huì)實(shí)例化一個(gè)Request對(duì)象,然后用request來(lái)裝載我們的請(qǐng)求信息,這個(gè)時(shí)候我們只有一個(gè)實(shí)例化的Request,所以啊,用request變量名是可以拿到我們要的請(qǐng)求信息的,所以request變量名總是會(huì)指向當(dāng)前的請(qǐng)求,request就不會(huì)出現(xiàn)混亂。

多線程的請(qǐng)求,(對(duì)象是保存狀態(tài)的地方)

flask框架的案例分析

怎么解決呢,我們自己想一想,

request1 = Request()

request2 = Request()

request3 = Request()

線程里有什么可以唯一確定一個(gè)線程呢,那就是線程的id號(hào),可以作為key,在flask中就是采用的這種原理來(lái)解決的,這種用不同id號(hào)作為鍵,其實(shí)就是線程隔離,線程隔離只是一種思想,并不一定都是用字典實(shí)現(xiàn),還可以用其他的方式實(shí)現(xiàn)。

以上是“flask框架的案例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道!

本文名稱:flask框架的案例分析-創(chuàng)新互聯(lián)
轉(zhuǎn)載源于:http://bm7419.com/article26/dippjg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站設(shè)計(jì)Google、關(guān)鍵詞優(yōu)化、響應(yīng)式網(wǎng)站網(wǎng)站設(shè)計(jì)公司、網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)