Сигналы Django - несколько запросов на одну модель? - PullRequest
0 голосов
/ 12 октября 2018

Я использую сигнал 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_responsemiddleware.

models.signals.pre_save.disconnect(dispatch_uid=(self.__class__, request,))

Это прекрасно работает, когда параллелизм не задействован.Однако предположим, что у нас есть три одновременных запроса - сигнал подключен три раза, и метод set_user вызывается девять раз для каждой комбинации запроса пользователя.

Согласно моему пониманиюкаждый запрос должен был работать независимо, но это явно не так.Я что-то упускаю или могу изменить в своем коде, чтобы это исправить?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...