在我的django应用程序中,我有一个AJAX视图,其中充斥着对update方法的调用,我将其称为IncrementMagicNumber:
def IncrementMagicNumber(request) :
number = request.GET['increment']
request.session['magicnumber'] = request.session['magicnumber'] + int(number)
return HttpResponse("OK!")
这适用于一次一次更新,但是当客户端连续多次调用SetMagicNumber时,事情会变得混乱。假设magicnumber最初为0.客户端向IncrementMagicNumber发送3个连续的AJAX请求:
IncrementMagicNumber(2)
IncrementMagicNumber(5)
IncrementMagicNumber(4)
客户端现在希望该值为11,但是apache正在同时处理所有这些请求,因此只保留最终更新。有关同步Django会话的任何提示/技巧吗?
如果可能的话我想避免的事情:
- 客户端批处理(我意识到这会解决它,但这是一个后端问题,最好在那里修复)
- 某种数据库锁定;如果可能的话,我宁愿避免这种方法。
答案 0 :(得分:0)
我们做这样的事情并使用数据库行锁定。为什么要避免这种情况?我想说这里需要某种锁定机制。