170 похожих чатов

Добрый день. Такой вопрос. Django+ psql. В базе есть строка, флаг состояния

у строки по умолчанию false.
Есть метод, который читает эту строку и меняет значение флага.
Флаг меняется через декораторы.
При приблизительно одновременном вызове метода( через декораторы) из орм в оба экземлпляра метода приходят одинаковые значения строки и флага. Естественно оба экземпляра выполняются успешно, чего не должно быть. Есть ли какие-либо готовые решения для устранения этой проблемы?

2 ответов

7 просмотров

Можно заблокировать строку в бд, но это плохое решение

Готовое решение SELECT FOR UPDATE, в QuerySet.select_for_update, лок ROW SHARE на строку, селекты не блокируются, селект с FOR UPDATE ожидает окончания первого запроса и возвращает новую строку. Как альтернативный вариант advisory lock. Вообще неплохо было бы описать зачем это, возможно стоит решать вообще по другому задачу.

Похожие вопросы

Обсуждают сегодня

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
52
А дальше что?.. Записать в файл, потом в Код?.. И потом разбирать как-то?..
Хаскель Моисеевич Гопник
14
доброго времени. db, dw и прочие исполняются при трансляции или при выполнении программы?
lutayyy
10
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
например asm AT&T ... label: .string "hi" ... # not error lea label(%rip), %rax # error ( not compile ) mov %rip, %rax # not error mov (%rip), %rax из форумов прочитал чт...
Simple Sorcerer
6
Почему никто не подсказал, что можно объявить свои типы данных, в которых меньше полей, чем в отданном джейсоне, и добавлять их по необходимости?
Strange Rabbit
8
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Есть предложения, как подобное можно упростить?
Hemul GM
12
Карта сайта