Найти - Пользователи
Полная версия: django и очередь заданий.
Начало » Флейм » django и очередь заданий.
1
helm2004
Доброго времени суток! Решил оставить тему здесь, чтоб не было холивара.

Есть задача: Нужно организовать очередь. То есть: Один юзер покупает вещь, а другой юзер терпеливо ждет пока первый ее не купит. Чтоб одновременно не могли купить одну вещь. Ведь на складе может и не быть 2х.

Как сие организовать? Смотрю в сторону Celery. Или я не прав?

Спасибо за ответы.
FishHook
helm2004
Чтоб одновременно не могли купить одну вещь.
Перед тем как пометить вещь как проданную, смотрим, не стоит ли у неё флаг “продано”?
helm2004
Я не правильно выразился - есть биржа, где одновременно есть несколько предложений. И вот один Юзер прошелся про предложениям и купил что-то, одновременно и Юзер тоже проходится по предложениям. Может быть коллизия.
FishHook
Коллизии решаются транзакциями запросов, разве нет?
helm2004
Вот и мы дошли к самому интересному. Как работают транзакции на Джанге/Постгре? Почитать где-то об этом
можно?
FishHook
может тут?
ZAN
helm2004
Здесь действительно два варианта - разрешать коллизию на уровне транзакций в базе данных, либо проводить операцию покупки через очередь заданий, где количество параллельных заданий равно 1.
Несмотря на то, что очередь заданий требует дополнительный сервис (celery + брокер (RabbitMQ, Redis, etc)), код обработки критической секции будет проще, т.к. запросы гарантировано будут уложены в очередь и будут обрабатываться последовательно.
inoks
У вас High-load и больше 100к конкуретных запросов?

Или задача зарезирвировать товар для Пользователя1, на время прохождения оплаты, внесения рекивизитов и т.п. и вернуть его в остатки в случае если что то не срослось с Пользователем1?
helm2004
Второй вариант.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB