У меня есть класс, который расширяет WebsocketConsumer и таким образом связывается с клиентом через веб-сокет. Насколько я понимаю, весь процесс управляется событиями, и у меня есть один метод, имеющий критическую секцию (я не хочу, чтобы функция снова запускалась, пока она еще обрабатывается).
Могу ли я просто использовать встроенный модуль Python threading
для блокировки этого раздела. Например:
import threading
class UserCharacterConsumer(WebsocketConsumer):
def __init__(self, *args, **kwargs):
super().__init__(*args, *kwargs)
self.lock = threading.Lock()
def critical_method(self):
self.lock.acquire()
try:
# critical section
pass
finally:
self.lock.release()
Или это не сработает для Django-Channels, потому что он не использует потоки таким образом?
Редактировать: достаточно заблокировать метод только для текущего пользователя (или даже только для экземпляра класса)