日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)Python教程:flask多線程模式

flask是一個(gè)web框架

10年的岫巖網(wǎng)站建設(shè)經(jīng)驗(yàn),針對(duì)設(shè)計(jì)、前端、開發(fā)、售后、文案、推廣等六對(duì)一服務(wù),響應(yīng)快,48小時(shí)及時(shí)工作處理。營(yíng)銷型網(wǎng)站建設(shè)的優(yōu)勢(shì)是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動(dòng)調(diào)整岫巖建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計(jì),從而大程度地提升瀏覽體驗(yàn)。成都創(chuàng)新互聯(lián)從事“岫巖網(wǎng)站設(shè)計(jì)”,“岫巖網(wǎng)站推廣”以來,每個(gè)客戶項(xiàng)目都認(rèn)真落實(shí)執(zhí)行。

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

比如發(fā)起10個(gè)請(qǐng)求,那么flask開啟多少個(gè)線程來處理請(qǐng)求?

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

其實(shí)是由webserver,外部服務(wù)器開啟的,我們的flask框架或者寫的項(xiàng)目代碼,如果沒有外部服務(wù)器是無法運(yùn)行的,如果要讓項(xiàng)目跑起來的話,必須要有一個(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)程單線程來響應(yīng)我們的客戶端請(qǐng)求。大家很容易想到,10個(gè)請(qǐng)求進(jìn)來是沒有辦法同事執(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ā)送過來的請(qǐng)求信息是不相同的。那么用一個(gè)變量request怎么代表不同用戶的請(qǐng)求信息呢?

由于單線程是順序執(zhí)行的,只有處理完一個(gè)請(qǐng)求才能處理另一個(gè)請(qǐng)求,對(duì)于單線程來說,請(qǐng)求就像排隊(duì)一樣,請(qǐng)求進(jìn)來之后,flask會(huì)實(shí)例化一個(gè)Request對(duì)象,然后用request來裝載我們的請(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)的地方)

怎么解決呢?

request1 = Request()

request2 = Request()

request3 = Request()

但是我們并不知道到底有多少個(gè)請(qǐng)求會(huì)發(fā)生,那么有沒有一種用一個(gè)變量來表示的所有的請(qǐng)求信息呢,有,是字典.線程里有什么可以唯一確定一個(gè)線程呢,那就是線程的id號(hào),可以作為key,在flask中就是采用的這種原理來解決的,這種用不同id號(hào)作為鍵,其實(shí)就是線程隔離,線程隔離只是一種思想,并不一定都是用字典實(shí)現(xiàn),還可以用其他的方式實(shí)現(xiàn)。


當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)Python教程:flask多線程模式
分享URL:http://www.dlmjj.cn/article/cocided.html