Отмена действий в базе данных при дисконнекте вебсокет соеднинения со стороны клиента

Есть приложение, написанное на django rest framework, для установки вебсокет соединения используется библиотека django-channels. В одном из методов моего консьюмера у меня есть действия с базой данных. Я хочу сделать так, чтобы при разрыве вебсокет соединения со стороны клиента, все взаимодействия с базой данных откатывались назад. Вот мой код consumers.py:

class SomeName(WebsocketConsumer):
   def connect(self):
       """
       some logic here
       """
   def disconnect(self, code):
      self.close(code=code)
      raise StopConsumer()
   

   @transaction.atomic
   def somemethod(self):
       """
       some logic including database objects creating
       """
       self.disconnect(code=1000)

Сейчас если я прерываю соединение, то все взаимодействия с базой данных отменяются. Правда если я не прерываю соединение и позволяю методу завершить работу, то в базу данных не вносятся изменений. Подскажите пожалуйста, что я делаю не так.


Ответы (0 шт):