django解決訂單并發(fā)問題【推薦】
并發(fā)處理
在多個(gè)用戶同時(shí)發(fā)起對同一個(gè)商品的下單請求時(shí),先查詢商品庫存,再修改商品庫存,會出現(xiàn)資源競爭問題,導(dǎo)致庫存的最終結(jié)果出現(xiàn)異常。
解決辦法:
悲觀鎖
當(dāng)查詢某條記錄時(shí),即讓數(shù)據(jù)庫為該記錄加鎖,鎖住記錄后別人無法操作,使用類似如下語法
select stock from tb_sku where id=1 for update; SKU.objects.select_for_update().get(id=1)
悲觀鎖類似于我們在多線程資源競爭時(shí)添加的互斥鎖,容易出現(xiàn)死鎖現(xiàn)象,采用不多。
樂觀鎖
樂觀鎖并不是真實(shí)存在的鎖,而是在更新的時(shí)候判斷此時(shí)的庫存是否是之前查詢出的庫存,如果相同,表示沒人修改,可以更新庫存,否則表示別人搶過資源,不再執(zhí)行庫存更新。類似如下操作
update tb_sku set stock=2 where id=1 and stock=7; SKU.objects.filter(id=1, stock=7).update(stock=2)
任務(wù)隊(duì)列
將下單的邏輯放到任務(wù)隊(duì)列中(如celery),將并行轉(zhuǎn)為串行,所有人排隊(duì)下單。比如開啟只有一個(gè)進(jìn)程的Celery,一個(gè)訂單一個(gè)訂單的處理。
總結(jié)
以上所述是小編給大家介紹的django解決訂單并發(fā)問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時(shí)回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
如果你覺得本文對你有幫助,歡迎轉(zhuǎn)載,煩請注明出處,謝謝!
相關(guān)文章
python實(shí)現(xiàn)經(jīng)緯度采樣的示例代碼
這篇文章主要介紹了python實(shí)現(xiàn)經(jīng)緯度采樣的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12Python中re.findAll()、re.sub()、set()的使用
本文主要介紹了Python中re.findAll()、re.sub()、set()的使用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Python探索之靜態(tài)方法和類方法的區(qū)別詳解
這篇文章主要介紹了Python探索之靜態(tài)方法和類方法的區(qū)別詳解,小編覺得還是挺不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-10-10Python導(dǎo)入引用其他文件的函數(shù)實(shí)戰(zhàn)案例(推薦!)
這篇文章主要給大家介紹了關(guān)于Python導(dǎo)入引用其他文件的函數(shù)的相關(guān)資料,文中通過代碼以及圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Python具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2024-01-01Python3.6 中的pyinstaller安裝和使用教程
這篇文章主要介紹了Python3.6 中的pyinstaller安裝和使用的教程,本文給大家介紹的非常詳細(xì),對大家的工作或?qū)W習(xí)具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03python+selenium實(shí)現(xiàn)自動搶票功能實(shí)例代碼
Selenium是ThoughtWorks公司的一個(gè)強(qiáng)大的開源Web功能測試工具系列,采用Javascript來管理整個(gè)測試過程,包括讀入測試套件、執(zhí)行測試和記錄測試結(jié)果。這篇文章主要介紹了python+selenium實(shí)現(xiàn)自動搶票,需要的朋友可以參考下2018-11-11Python釘釘報(bào)警及Zabbix集成釘釘報(bào)警的示例代碼
這篇文章主要介紹了Python釘釘報(bào)警及Zabbix集成釘釘報(bào)警的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08python ndarray數(shù)組對象特點(diǎn)及實(shí)例分享
在本篇文章里小編給大家分享的是一篇關(guān)于python ndarray數(shù)組對象特點(diǎn)及實(shí)例相關(guān)內(nèi)容,有需要的朋友們跟著學(xué)習(xí)下。2021-10-10