我在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'之前。在調用'model1.save()'之後,你有'view1'中的代碼,但是你想提交事務以便Celery能夠立即看到保存的對象?或者你是否在視圖的'處理請求和保存模型1數據'部分中保存了對象,並且在調用'model1.save()'之前,你不希望事務被提交?或者是其他東西? – Alasdair
是的,我在model1.save()之前和之後有很多代碼。這之後/之前的代碼實際上使得芹菜假定model1存在於數據庫中。所以我的竅門是在自動提交模式下打開一個事務。所以我的問題是,如果django現在以自動提交模式運行,我現在應該做什麼? transaction.atomic()? – user3548288