处理同时更新会话

时间:2010-10-12 05:27:47

标签: django session locking

在我的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会话的任何提示/技巧吗?

如果可能的话我想避免的事情:
- 客户端批处理(我意识到这会解决它,但这是一个后端问题,最好在那里修复)
- 某种数据库锁定;如果可能的话,我宁愿避免这种方法。

1 个答案:

答案 0 :(得分:0)

我们做这样的事情并使用数据库行锁定。为什么要避免这种情况?我想说这里需要某种锁定机制。