Django: как сделать get_or_create () потокобезопасным способом?

В моем приложении Django очень часто мне нужно сделать что-то похожее на get_or_create () . Например,

Пользователь отправляет тег. Нужно увидеть, если этот тег уже есть в базе данных. Если нет, создайте для него новую запись. Если это так, просто обновите существующие запись.

Но если заглянуть в документ для get_or_create () , похоже, что это небезопасно. Поток A проверяет и обнаруживает, что запись X не существует. Затем поток B проверяет и обнаруживает, что запись X не существует. Теперь и поток A, и поток B создадут новую запись X.

Это должна быть очень распространенная ситуация. Как мне справиться с этим безопасным способом?

19
задан Continuation 5 July 2011 в 18:36
поделиться