Вы захотите получить блокировку во время модели __init__()
;это может быть реализовано довольно просто через наследование.Для модели Manager
будет создан экземпляр QuerySet
для этой модели, и ваша блокировка будет получена, как только извлеченная модель будет добавлена в запрос _result_cache[]
или когда будет вызван запрос iterator()
.Конечно, вы должны будете убедиться, что, если модель еще не имеет ассоциированного pk
, вы отказываетесь от конфликта блокировки.
Если вы не хотите делать блокировку на уровне DB,Вы можете посмотреть на Django-cachebot .Он обрабатывает аннулирование модели, но самое главное, что он может хранить записи модели в общем хранилище для ваших потоков, поэтому вы можете реализовать состояние блокировки модели и отправить его в хранилище и запросить другие потоки.
У меня также есть желание дать вам большие взлеты за странный вопрос.Я бы не стал пробовать это дома, поэтому искренне надеюсь, что вы знаете, что делаете!