我正在建立一個網站,用戶發送一個隨機項目。每個視圖都會涉及更新很多變量,比如最後看到的是哪些類別,以及下一個隨機選取的類別。但是當我想到這一點時,我覺得這個代碼只有在請求一個接一個地發生時纔會起作用,如果用戶發出並行請求,就會出現問題。我想知道這個問題是真的還是django通過排隊並行請求來處理它。如果這是真的,那麼我正在考慮將新請求(第二個或第三個並行請求)重定向到「每個會話頁面一個請求」。我知道用戶提出並行請求的機會,並且破壞邏輯很小,但我仍然需要照顧它。並行請求同一會話django
0
A
回答
0
做出這些決定並不是Django的工作。這與你要使用的服務器技術(例如nginx,gunicorn,postgresql等)有關。如果你設計你的應用程序的方式是web應用程序的功能(即無狀態),你不應該擔心和所有的併發相關的東西應該透明地處理你的「單一的真相來源」,這在你的情況下應該是數據庫。
如果您的Web應用程序的設計/邏輯不符合這些原則,那麼它很可能存在缺陷,您需要重新設計它。
如果你真的認爲你的應用程序是特殊情況,給我們一些更具體的例子,甚至更好的,給我們看一些代碼。
0
Django應用程序可能會爲同一用戶提供並行請求,因此您必須自己處理。好的原則是儘量避免在後端狀態。你可能會考慮是否可以重新設計你的前端來處理狀態。然而,這並非總是可行的。
保持後端狀態的一種方法是使用Memcached,MongoDB或Redis等快速內存數據庫。如果使用正確,我相信這些將允許原子操作。一種選擇是使用公開原子操作的Djangos cache framework(至少在由memcached支持時)。
相關問題
- 1. 引用同一個有狀態會話bean的並行請求
- 2. Django - 由Ajax開始會話請求
- 3. 使用Django會話表的請求
- 4. 爲什麼Django在同一會話中阻止同時發生的請求?
- 5. Django的會話cookie丟失,因爲多個併發請求
- 6. 併發請求:從單個請求中刪除會話ID後會話丟失
- 7. HTTP會話請求
- 8. Zapier中的相同會話請求
- 9. AJAX,PHP會話和同步請求
- 10. 同時AJAX請求和PHP會話
- 11. django同步請求
- 12. 阻止來自同一服務器會話的相同請求
- 13. IIS7上的FastCGI ...來自同一用戶會話的多個併發請求?
- 14. ASP.net會話請求排隊
- 15. .NET會話變量請求
- 16. Spring MVC的 - 會話 - 請求
- 17. python請求POST cookie會話
- 18. 如何使用同一個會話創建多個HTTP請求
- 19. 同一會話中的多個AJAX POST請求
- 20. 爲每個httpclient請求重複使用同一會話
- 21. 使用同一個會話創建多個AJAX請求
- 22. 電報客戶端更新和在同一會話API請求
- 23. cURL:兩個單獨的請求,同一會話
- 24. Django/Memcached錯誤:請求的會話在請求完成之前被刪除
- 25. 同時ajax請求django
- 26. 使用Django會話密鑰在視圖之間使用請求會話
- 27. Http web請求不會保留會話
- 28. 會話:嘗試請求具有未決請求的會話的新權限
- 29. Django的 - 在阿賈克斯空會話數據請求
- 30. Django的可疑操作請求會話刪除
我有點困惑。 「Django可能有並行請求」是什麼意思?所有網絡應用都無法使用?是不是你用你選擇的網絡容器(例如gunicorn)來配置?你在django中做線程編程嗎?另外django會話(不管後端)和你提到的其他內容有什麼區別?或者你是在暗中討論django會話框架? – rantanplan
@rantanplan感謝您的評論。 1.是的,對於大多數web應用程序來說,並行請求是可能的。 OP詢問django是否以某種方式排隊來自同一用戶的請求,而不是並行處理它們,我回答說。 2.我有時會在Django中進行線程編程,但這裏並不相關。 3.我不是在談論會話框架,我所說的更接近緩存功能。我沒有看到任何參考如何使用Django會話進行原子操作,所以我沒有提及它,隨時提出建議,如果我錯了,我會更新答案(我試着閱讀文檔)。 – Lycha
我最初有點困惑,因爲我認爲你提議編寫處理請求併發的代碼。我對Redis和緩存並不陌生,我只是想知道如何讓它保持狀態,如果它讓它變得更簡單或者更加困擾事情。有沒有可以指向的例子?我真的不知道你的建議是錯的還是不是,我只知道我從來沒有遇到過類似的事情,這讓我很感興趣。 – rantanplan