2013-03-05 84 views
0

當我們有多個用戶連接到Django時,我有信號可以互相玩耍並斷開並重新連接。即使它們是同一臺服務器,它們是否完全獨立於每個用戶?django信號:同步問題?

所以我有兩個信號A和B post_save
兩者在斷開和重新連接的過程中互相呼叫。

  1. A的信號:斷開A,B,做B.save()
  2. B的信號:斷開A,B,做A.save()

是否有Django的信號同步問題?如果我同時保存多個A和B的所有信號,Django信號是否可以處理這個問題?

我猜測這些信號在每次被調用時都有不同的「簽名」或什麼的。

回答

1

由於信號處理程序通常在加載模塊時連接,而不是在每個請求中加載,所以在運行時連接和斷開連接的效果將使所有用戶都由相同的Django進程處理,而不僅僅是個別要求。

Django bug 14533似乎解決了一些線程安全問題,所以如果您打算在請求之間產生副作用,這可能會起作用,但除此之外,您應該考慮以更傳統的方式使用信號。