→ zerof: 用 mobile app 發文排版有點怪就將就點 03/16 17:42
→ zerof: lock 的部份關鍵字找『雙重檢查鎖定模式』自己研究一下8 03/16 17:58
推 ddavid: 我完全同意你說的內容,但就原Po明白擺出的Code而言,端 03/17 05:59
→ ddavid: 出這篇的內容是否有種XY Problem的感覺?XD 03/17 05:59
推 ddavid: 比如原問如果明白講了在multi-threading,我自然就不會這 03/17 06:03
→ ddavid: 麼答了,但他明白就在問app.py直接call了三次XD 03/17 06:03
推 ddavid: 1的部分亦同。當然你的補充都是很正確,我單純在原問有所 03/17 06:09
→ ddavid: 補充設定以前就先這麼答,待他若不滿意而有所補充,自然 03/17 06:09
→ ddavid: 你就華麗登場了XD 03/17 06:09
打字沒辦法表示語氣,有覺得冒犯的話先說個抱歉。
就原文的部份,我的看法是 1F 給的 singleton & after_create hook 這兩個關鍵字
就足以解決他的問題了。(當然他自己寫的 code 的 quality 是另一回事)
(以他的檔名`app.py` + db initial 的情況,沒意外會是 flask-like 的 web)
基本上我回文主要是基於你的內文 (會提到 multi-thread 的部份,一來是 link 中
的 `_RunningLoop` 是繼承自 threading.local ,二來是你原文內對 create method
「想不太到會導致重複」的補充說明。)
btw, link 稍微更新了一下,之前好像縮的時候沒縮到行號,在 L:694 左右。
當然我也不單純是無聊想糾正你,在假設他是用 flask 的情況下,在 local debug 的
時候就可以用 `app.run(threaded=True)` 來模擬(?) production 的情況,在文件內提
供的多數 deploy options (gevent, twisted, gunicorn...) 內都會有 multithreading
的 context (如果是用 Sanic 的話就更複雜了但我想會 Sanic 的不會問這種問題)
這些內容基本上用他用的 framework 當 keyword 加上 singleton/after_create hook
都會有些類似的 stackoverflow 可以研究參考。
(不過 flask 沒有 after_create hook ,當然你沒說我也沒必要特別提供正確的...
呃不是,就 keyword 自己研究下先搞清楚自己在問什麼說不定就解決了嘛)
我自己的想法很簡單,你懶我也懶,資訊給得少我就回少一點…會在網路上問問題的
人我自己是歸類成兩種,一種會符合 SSCCE(http://www.sscce.org/ ),要回問題就很
快;另一種就是給的通常都是片段的資訊,有時候自己也不知道自己在問什麼 (這種連
吐嘈都覺得好懶啊...)。
除此之外的共通點就是,會再給更多資訊的很少。 (有時候是自己想通了,有時候是
看了別人給的建議反而做了別的選擇之類的 blahblah)
這種行為就像是在丟 UDP 的 packets 一樣,沒有下文。
(反正我問題解了就好,回個感謝或是什麼之類的就再說)
也無所謂啦,反正我也是那種興致來了就回個文, keywords 都有大家自己研究研究
大概是這樣。最後還是回到一開頭那句,看文的覺得有冒犯就抱歉惹誤會誤會><
※ 編輯: zerof (180.218.219.240 臺灣), 03/18/2021 02:31:29
推 ddavid: 完全沒問題!:) 03/18 08:04
→ ToastBen: 誤區是哪裡的方言? 03/18 18:57
→ zerof: 誤區一詞常見於商院相關書籍,英文應該是用 area of misund 03/19 00:07
→ zerof: erstanding; 台文比較接近的詞應該是 誖誤 (但實際上和誖誤 03/19 00:07
→ zerof: 的意思有些出入) 中文有蠻多詞在萌典/教育部辭典是查不到 03/19 00:07
→ zerof: 的。至於是否為中國慣用詞彙,希望你可以研究一下 我也蠻想 03/19 00:07
→ zerof: 知道的 ;) 03/19 00:07
→ kobe8112: 誖誤不是有些出入,是完全不同吧... 03/19 09:09
→ kobe8112: 就單純積非成是而已 03/19 09:09
→ zerof: 個人建議就還是...查查字典 03/19 20:28