У меня есть функция в проекте django 1.4, которая сохраняет данные экземпляра модели в базу данных. сказать следующее Функция просмотраDjango 1.4 транзакции для Django 1.8 транзакций
def view1(request):
# processing request and saving model1 data
model1.save()
Там работает некоторое сельдерей задача периодически, которая держит проверки данных, которые только что сохранили !! Я хотел бы убедиться, что данные в функции были сохранены, и во время этой транзакции данные будут сохранены, а затем они будут доступны для задачи сельдерея
, поэтому я сделал что-то вроде: что сделал ниже код, он удостоверился, что задачи сельдерея были выполнены только если следующая сделка была закончена
def view1(request):
# processing request and saving model1 data
with transaction.autocommit:
model1.save()
Теперь в Django 1.8, я вижу, что Django изменил это автокоммит поведение (это?) все теперь работает в режиме автоматической фиксации , Что мне теперь делать?
Я не уверен, что понимаю, почему вы использовали 'transaction.autocommit' раньше. У вас был код в 'view1' после вызова' model1.save() ', но вы хотели зафиксировать транзакцию, чтобы сельдерей мог сразу увидеть сохраненный объект? Или вы сохранили объекты в разделе «запрос на обработку и сохранение данных модели1» в представлении, и вы не хотели, чтобы транзакция выполнялась до тех пор, пока вы не назовете «model1.save()»? Или что-то другое? – Alasdair
Да У меня много кода после и до model1.save(). Этот код «после/до» действительно делает сельдерей предполагать, что модель1 существует в базе данных. поэтому мой трюк состоял в том, чтобы открыть транзакцию в режиме autocommit. так что мой вопрос: если django работает в режиме autocommit сейчас, что мне теперь делать? transaction.atomic()? – user3548288