flask進階編程-LocalStack線程隔離

來源:互聯網
上載者:User

標籤:tac   資料結構   src   rom   檔案建立   變數   for   請求   總結   

30、LocalStack作為線程隔離對象的意義  30.1 資料結構    限制了某些能力  30.2 線程隔離
# -*- coding=utf-8 -*-import threadingimport timefrom werkzeug.local import LocalStackmy_stack = LocalStack()my_stack.push(1)print(‘in main thread after push, value is:‘ + str(my_stack.top))def worker():    # 新線程    print(‘in new thread before push, value is:‘ + str(my_stack.top))    my_stack.push(2)    print(‘in new thread after push, value is:‘ + str(my_stack.top))new_t = threading.Thread(target=worker, name=‘qiyue_thread‘)new_t.start()time.sleep(1)
test/LocalStack.py

  30.3 flask為什麼需要棧結構

    需要棧結構,將兩個上下文推到棧中去

  30.4 為什麼需要LocalStack    需要棧是線程隔離的  30.5 線程隔離意義    是當前線程能夠正確引用到他自己所建立的對象,而不是引用到其他線程所建立的對象    (1)用一個變數名(request)同事指向多個線程所建立的多個執行個體化對象是不可能的    (2)可以做到,在當前線程,在引用request(變數名)可以正確找到當前線程它自己所執行個體化的Request對象  30.6 請求上下文包含Request對象,所以,Request也是被線程隔離的    session也是線程隔離  30.7 知識梳理    (1)線程隔離對象      LocalStack和local是線程隔離對象    (2)被線程隔離的對象      通過線程隔離對象來建立被線程隔離的對象    (3)flask的核心對象app作為一個屬性存在於AppContext的應用上下文下      核心對象app只有一個,是在入口檔案建立,在主線程中被建立    (4)多線程編程痛點      安全執行緒      線程隔離  30.8 總結    (1)Local->LocalStack,線程隔離對象實現      Local內部有一個字典,以線程ID號作為key      LocalStack如何??LocalStack封裝了Local      操作Local,通常使用.去訪問下面的屬性;使用LocalStack,需要使用那幾個常用的方法和屬性,push、pop、top    (2)AppContext->RequestContext      請求進來,會被推入到LocalStack的棧中去,同時在請求結束時,AppContext和RequestContext會被pop彈出去    (3)Flask->AppContext Request->RequestContext      AppContext重要特點,將Flask核心對象作為它的一個屬性,儲存了起來      RequestContext請求上下文,將請求對象Request封裝和儲存    (4)current_app->(LocalStack.top=Appcontext top.app=Flask)      current_app指向的是LocalStack下面的棧頂元素的一個屬性,也就是top.app,Flask的核心對象      棧頂元素為應用上下文    (5)request->(LocalStack.top=RequestContext top.request=Request)      request實際指向的是LocalStack棧頂元素下面的Request請求對象

flask進階編程-LocalStack線程隔離

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.