В моем приложении django у меня есть одно представление AJAX, которое заполняется вызовами метода обновления, который я буду называть IncrementMagicNumber:
def IncrementMagicNumber(request) :
number = request.GET['increment']
request.session['magicnumber'] = request.session['magicnumber'] + int(number)
return HttpResponse("OK!")
Это прекрасно работает для одного обновления за раз, но когда клиент вызывает SetMagicNumber несколько раз подряд, все становится беспорядочным. Допустим, магический номер изначально равен 0. Клиент отправляет 3 последовательных AJAX-запроса в IncrementMagicNumber:
IncrementMagicNumber(2)
IncrementMagicNumber(5)
IncrementMagicNumber(4)
Клиент ожидает, что значение будет 11, но apache обрабатывает все эти запросы одновременно, поэтому сохраняется только последнее обновление. Какие-нибудь советы / приемы для синхронизации сеанса Django?
Вещи, которых я бы хотел избежать, если это вообще возможно:
- Пакетирование на стороне клиента (я понимаю, что это исправит это, но это проблема с бэкендом, и ее лучше там исправить)
- какая-то блокировка базы данных; Я бы предпочел избежать этого подхода, если это возможно.