3
我有一個視圖,需要執行更新數據庫涉及共享資源,需要鎖定(實施是複雜的,但只是一個共享計數器的核心)。Django事務和併發
從比賽條件保護我自己,我使用的代碼看起來大致是這樣的:
@transaction.commit_manually
def do_it(request):
affected_models = Something.objects.select_for_update(blah = 1)
for model in affected_models:
model.modify()
model.save()
transaction.commit()
是這種用法的commit_manually
,select_for_update()
和save()
好嗎?我該如何編寫一個測試來證實這一點?例如,我找不到Django在交易之間觸發的信號;我不能只是運行它,並希望併發問題出現並得到處理。
關於測試邁克爾福德寫了關於類似的問題,它提供了[測試模式] [1]。它使用子進程。 [1]:http://www.voidspace.org.uk/python/weblog/arch_d7_2011_05_07.shtml – Ale
http://www.caktusgroup.com/blog/2009/05/26/testing-django-views - 用於-併發問題/ – Ale