Django Channels 是否会在每次使用时创建一个新的消费者?

Does Django Channels create a new consumer with every use?

我有一个消费者

class BingoConsumer(WebsocketConsumer):
    logged_in = 0

    def connect(self):
        async_to_sync(self.channel_layer.group_add)(
            "login", self.channel_name
        )
        self.accept()

    def disconnect(self, close_code):
        async_to_sync(self.channel_layer.group_discard)(
            "login", self.channel_name
        )
        self.logged_in -= 1
    def receive(self, text_data):
        text_data = json.loads(text_data)
        if text_data['type'] == 'login':
            self.logged_in += 1
            async_to_sync(self.channel_layer.group_send)(
                "login", {
                    'type': 'login',
                    'count': self.logged_in,
                }
            )

    def login(self, event):
        self.send(text_data=json.dumps({
            'type': 'login',
            'total': event['count'],
        }))

每次用户登录我的网站时都会调用它,它会自动调用类型为 'login' 的 websocket。我想跟踪当前登录的用户数量,但目前无论登录多少人,它仍然是 1。这让我想知道,Django 是否将消费者视为一次性使用 class?它会根据需要创建和销毁它们吗?

不同会话之间不共享变量。如果你想在多个会话中计算变量,你可能需要使用数据库或本地文件。