Обработка одновременных обновлений сеанса - PullRequest
1 голос
/ 12 октября 2010

В моем приложении 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?

Вещи, которых я бы хотел избежать, если это вообще возможно:
- Пакетирование на стороне клиента (я понимаю, что это исправит это, но это проблема с бэкендом, и ее лучше там исправить)
- какая-то блокировка базы данных; Я бы предпочел избежать этого подхода, если это возможно.

1 Ответ

0 голосов
/ 12 октября 2010

мы делаем что-то подобное и используем блокировку строки базы данных.почему ты хочешь этого избежать?Я бы сказал, что здесь нужен какой-то механизм блокировки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...