Вы правы, что беспокоитесь, у вас типичная проблема параллелизма.Хотя Django уже помогает вам, нативно используя атомарную систему в каждом представлении (каждое представление является транзакцией, и, следовательно, гарантированно работает полностью с успехом или ничего не делает в случае исключений), это не полностью решает вашу проблему.
Вы должны гарантировать, что каждый процесс read> process> write выполняется независимо от других, поэтому, например, если у вас есть несколько потоков Django в одном приложении, когда вызывается ваша функция "book", вы должны избегать попадания в нее других потоков.функция (или, по крайней мере, чувствительные к параллелизму части).Вы можете достичь этого с помощью контроллеров параллелизма, таких как семафоры или мониторы.Взгляните здесь и здесь .
Ваш код должен выглядеть примерно так:
def book(params...):
LOCK()
# check ticket availability
# define some stuff which will we added to the new ticket entity
# save new ticket entity
UNLOCK()