2013-03-05 87 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似乎解决了一些线程安全问题,所以如果您打算在请求之间产生副作用,这可能会起作用,但除此之外,您应该考虑以更传统的方式使用信号。