在Django中的事務提交後執行程式碼
有沒有辦法在Django中提交事務後執行一些程式碼?
我需要傳送一些訊息給一個rabbitmq伺服器進行離線處理,但是在Django事務被提交之前訊息會傳給消費者.
我的訊息是在模型的post_save訊號中傳送的.我正在尋找的是一種類似的機制,使用訊號或其他東西,將在提交後執行程式碼(如果事務失敗,則不執行任何操作).
我沒有找到任何通用的Django方法.你有什麼想法嗎
,並在Django版本1.9中釋出.
更新:django-transaction-hooks 解決了這個問題.
我不相信有一個乾淨的方法來做到這一點;至少我不能想到一個.您可以使用monkeypatch django.db.transaction.commit傳送自定義訊號;不漂亮,但我認為它會工作.
在django-developers mailing list 也可能提出這個用例.開發人員通常厭惡新增新的訊號,但您可能會在這裡有一個很好的例子(核心開發人員的反駁可能包括一個有用的建議如何解決您的情況).如果等到1.1出來之後,你就更有可能得到迴應.
http://stackoverflow.com/questions/950214/run-code-after-transaction-commit-in-django