Я использую сигнал 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
middleware.
models.signals.pre_save.disconnect(dispatch_uid=(self.__class__, request,))
Это прекрасно работает, когда параллелизм не задействован.Однако предположим, что у нас есть три одновременных запроса - сигнал подключен три раза, и метод set_user
вызывается девять раз для каждой комбинации запроса пользователя.
Согласно моему пониманиюкаждый запрос должен был работать независимо, но это явно не так.Я что-то упускаю или могу изменить в своем коде, чтобы это исправить?