Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 5, 2016 13:03:10

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

django и очередь заданий.

Доброго времени суток! Решил оставить тему здесь, чтоб не было холивара.

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

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

Спасибо за ответы.

Офлайн

#2 Апрель 5, 2016 13:17:58

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django и очередь заданий.

helm2004
Чтоб одновременно не могли купить одну вещь.
Перед тем как пометить вещь как проданную, смотрим, не стоит ли у неё флаг “продано”?



Офлайн

#3 Апрель 5, 2016 13:58:15

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

django и очередь заданий.

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

Офлайн

#4 Апрель 5, 2016 15:46:03

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django и очередь заданий.

Коллизии решаются транзакциями запросов, разве нет?



Офлайн

#5 Апрель 5, 2016 16:43:49

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

django и очередь заданий.

Вот и мы дошли к самому интересному. Как работают транзакции на Джанге/Постгре? Почитать где-то об этом
можно?

Офлайн

#6 Апрель 5, 2016 16:53:56

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

django и очередь заданий.

может тут?



Офлайн

#7 Апрель 7, 2016 13:27:25

ZAN
От:
Зарегистрирован: 2007-06-10
Сообщения: 403
Репутация: +  10  -
Профиль   Отправить e-mail  

django и очередь заданий.

helm2004
Здесь действительно два варианта - разрешать коллизию на уровне транзакций в базе данных, либо проводить операцию покупки через очередь заданий, где количество параллельных заданий равно 1.
Несмотря на то, что очередь заданий требует дополнительный сервис (celery + брокер (RabbitMQ, Redis, etc)), код обработки критической секции будет проще, т.к. запросы гарантировано будут уложены в очередь и будут обрабатываться последовательно.



Офлайн

#8 Апрель 13, 2016 15:38:46

inoks
От: Russia
Зарегистрирован: 2012-12-11
Сообщения: 343
Репутация: +  35  -
Профиль   Адрес электронной почты  

django и очередь заданий.

У вас High-load и больше 100к конкуретных запросов?

Или задача зарезирвировать товар для Пользователя1, на время прохождения оплаты, внесения рекивизитов и т.п. и вернуть его в остатки в случае если что то не срослось с Пользователем1?

Офлайн

#9 Апрель 15, 2016 09:52:27

helm2004
От: Украина, Винница
Зарегистрирован: 2008-02-27
Сообщения: 630
Репутация: +  9  -
Профиль   Отправить e-mail  

django и очередь заданий.

Второй вариант.

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version