1.我在寫乙個部落格**的時候,當乙個使用者註冊了賬號資訊的時候會傳送一封郵件到郵箱讓使用者來確認, 我發現其中有乙個問題就是當請求來時一次只能傳送一封郵件,所以在傳送多封郵件時會耗費很多的時間,這時候就需要多執行緒技術,當然了在處理http請求的伺服器也是這樣的,當我們自己寫的程式在面臨大量的使用者同時發起的請求時,我們不可能乙個個的處理。我們需要使用多執行緒技術,在flask中werkzeug提供的開發伺服器會預設的開啟多執行緒支援。
2.在使用多執行緒時我們會面臨乙個問題,假如a和b使用者同時向hello檢視訪問,這時伺服器分配的兩個執行緒來處理請求,如何保證兩個請求是各自對應互不干擾的?
3.辦法:再儲存資料的同時儲存下對應執行緒的id號,獲取資料時可以根據執行緒id號獲取到對應的資料
具體可參考原始碼中的werkzeug/local.py
注釋:在python中前後雙下滑線的方法常常被稱作魔法方法。它們是內建的特殊方法可以通過這些方法來改變類的行為
比如:init()方法(建構函式)會在類被例項化時呼叫
repr()方法會在類例項被列印時呼叫
local類中定義的__getattr__(),setattr(),delattr()方法分別在類屬性被訪問,設定,刪除時呼叫;call()會在類例項被呼叫時呼叫,iter()會在類例項被迭代時呼叫;完整的列表可以在python文件(看到
Python 本地執行緒
import threading import time class a pass a a deffunc num a.name num time.sleep 1 print a.name,threading.current thread name 結果d virtualenv envs vuedj...
flask 本地執行緒 請求上下文補充
context 上下文 是flask裡面非常好的設計,使用flask需要非常理解應用上下文和請求上下文這兩個概念 本地執行緒 本地執行緒的實現原理就是 在threading.current thread dict 裡新增乙個包含物件mydata的id值的key,來儲存不同的執行緒狀態werkzeug...
本地執行緒變數(四) FastThreadLocal
四 總結 一 背景 因為需要,研究了可以通過inheritablethreadlocal進行父子執行緒中如何傳遞本地執行緒變數,通過阿里開源專案transmitablethreadlocal進行進行執行緒池傳遞本地執行緒變數 詳解可檢視以往部落格 在查詢資料的過程中無意發現了dobbo的intern...