我正在使用pre_save
信号来存储对特定实例执行最后操作的用户。
要实现这一点,我正在使用中间件。在其process_request
函数中,信号已通过适当的函数set_user
进行注册,如下所示。
mark_who_did = curry(self.set_user, user)
models.signals.pre_save.connect(
mark_who_did,
dispatch_uid=(self.__class__, request,),
weak=False
)
然后,我要在中间件的process_response
函数中断开此信号。
models.signals.pre_save.disconnect(dispatch_uid=(self.__class__, request,))
在不涉及并发的情况下,此方法工作正常。但是,假设我们有三个并发请求-对于每个用户请求组合,信号连接3次,并且set_user
方法被调用 9次。
根据我的理解,每个请求都应该独立运行,但是显然并非如此。是我缺少了什么,还是可以更改我的代码来解决此问题?