2013-11-01 61 views
1

我正在開發一個django IPN插件,將IPN數據保存到模型中,然後調用post_save信號。django信號是否始終同步?

我擔心在這個用例(gunicorn,gevent等)下可能會異步調用/完成信號。 IPN經常向ipn url發送多個請求,我需要能夠按順序處理這些請求。

我應該用這個隊列嗎?簡單的Python隊列的工作會更好,還是應該使用kombu +芹菜(1名工人)?

回答

4

不確定同步性是您真正關心的地方。 Django的信號始終執行進程中:也就是說,在返回響應之前,它們將由執行請求的其餘部分的進程執行。但是,如果您的服務器本身是異步的,則可能會有一個請求在稍後收到第二個請求之後完成處理,因此信號將按錯誤順序處理。

當然,芹菜絕對是異步的,但如果可靠的排序對您來說是一個優先選擇,那麼這可能是一個更好的選擇。

+0

只是確認我的想法,謝謝!同步性是一個問題的原因是交易幾乎總是發送多個通知(不同的產品,額外的重複等)。我希望能夠通過信號處理賬戶創建,並且如果模型無法保存,我不希望任何交易通過裂縫。或者更糟的是,爲用戶創建了兩個帳戶。 – Kin