Запретить одновременные запросы от одного пользователя в django-rest-framework - PullRequest
0 голосов
/ 28 апреля 2018

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

1 Ответ

0 голосов
/ 28 апреля 2018

Это было бы нарушением концепции RESTful, что нет состояния сеанса поддерживается между вызовами API REST на сервере; все состояние поддерживается клиентом. Возможно, вы можете сделать свой код идемпотентным , чтобы множественные представления просто помещали значение на основе того, что было в последний раз получено с помощью GET. Я предполагаю, что ресурс, который обновляет ваш пользователь, идентифицирован как его (например, атрибут данного пользователя). Вы также можете рассмотреть возможность размещения чего-либо в очереди с ответом 202 Accepted, а затем очередь будет очищена другим процессом, который реализует любую политику, которая вам нравится. Это потребует от клиента опроса другого GET, чтобы узнать результат.

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