在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Python/ django 如何解決訂單30分鐘后自動(dòng)取消和數(shù)據(jù)庫(kù)回庫(kù)的問(wèn)題?

django 如何解決訂單30分鐘后自動(dòng)取消和數(shù)據(jù)庫(kù)回庫(kù)的問(wèn)題?

用Django開(kāi)發(fā)的一個(gè)商城網(wǎng)站,用戶(hù)下訂單后有30分鐘的付款時(shí)間。
下訂單的時(shí)候,數(shù)據(jù)庫(kù)庫(kù)存會(huì)減去交易量。

  1. 如何實(shí)現(xiàn)30分鐘訂單自動(dòng)取消?
  2. 以及如何實(shí)現(xiàn),取消后數(shù)據(jù)庫(kù)回庫(kù)的問(wèn)題?

不考慮隨意下單的情況(下單需要驗(yàn)證數(shù)據(jù)庫(kù)庫(kù)存是否足夠,盡量保證下單完成后,只要在30分鐘內(nèi)完成支付操作就可以買(mǎi)到商品)

最好有相關(guān)的代碼,萬(wàn)分感謝!

回答
編輯回答
柒槿年

celery定時(shí)任務(wù)

2017年3月16日 20:02
編輯回答
裸橙

為了保證性能不能直接去輪循數(shù)據(jù)庫(kù),另外為了保證30分鐘及時(shí)釋放訂單總量,不能有太大延時(shí)比如由訂單客戶(hù)自己去觸發(fā)取消,所以?xún)煞N方案你挑一種

一、延時(shí)隊(duì)列
把未付款訂單按照先后順序,插入隊(duì)列,開(kāi)啟線程取隊(duì)列的第一個(gè),如果時(shí)間已到則移出隊(duì)列關(guān)閉訂單,如果時(shí)間未到
則線程等待相應(yīng)的時(shí)間差

二、借用redis的失效通知
redis有個(gè)特性就是到期失效,把訂單號(hào)和失效時(shí)間插入redis,當(dāng)失效的時(shí)候走取消訂單的流程

2017年11月14日 22:01
編輯回答
毀了心

可以嘗試寫(xiě)個(gè)定時(shí)腳本去調(diào)度處理這些超過(guò)30分鐘未支付的訂單,更新訂單的狀態(tài)。

2018年2月19日 02:16
編輯回答
乖乖瀦

要求代碼有點(diǎn)強(qiáng)人所難了,大家給公司寫(xiě)代碼是拿錢(qián)的,大家在問(wèn)答平臺(tái)閱讀分析找一下題主代碼的問(wèn)題和寫(xiě)一些概念性的簡(jiǎn)短代碼是沒(méi)有問(wèn)題的,直接想讓人幫你寫(xiě)具體的業(yè)務(wù)代碼是不現(xiàn)實(shí)的。
說(shuō)說(shuō)我的想法,建立一張未付款訂單表,付款后將訂單移到正式的訂單表里,每分鐘檢查一次未付款訂單表,超時(shí)未付款的自動(dòng)取消。

2018年3月31日 03:56