Django是否信号线程安全?

时间:2014-01-03 15:56:17

标签: django signals

如果我断开连接然后在单线程上下文中连接一些信号会影响其他线程使用的信号池吗?

更新
我会尝试更具体。

我正在使用post_save和pre_delete信号为几个发送者触发全文引擎重新索引特定模型(一个特定模型),这是全文引擎的主要内容源。

通过Celery任务完成重建索引,信号处理程序只需将重建索引任务分配给代理(在我的案例中是Redis)。

一些post_save信号不应该触发重建索引(即 - 不应该调度Celery任务,pre_delete应该总是触发重建索引),因为一些模型更改与全文引擎内容无关(即状态更改,时间戳更改和其他一些)。对于每种情况,我都无法验证处理程序kwargs中的update_fields,因为根据我的观察,管理站点保存操作没有指定那些。

我正在使用自定义上下文管理器,它将重建索引处理程序与特定发件人的post_save信号断开连接,将控制权返回到调用代码段,然后执行模型上的保存操作以及何时将控件传递回上下文管理器所有重建索引处理程序正在重新连接到特定发件人的post_save信号。

我想确保在单线程上下文中执行的上下文管理器中的断开/连接例程不会影响其他线程(即 - 在单线程上下文中断开的所有信号仍将在其他线程中连接)。

谢谢! 无耻的

0 个答案:

没有答案