2

我正在尝试使用 Django 通道创建一个对象,该对象对于连接到套接字的每个人都保持持久性/

当我尝试创建一个在多次receive()运行之间保持持久性的对象时,它会引发NoneType异常

class MyConsumer(WebsocketConsumer):


    def __init__(self,path):
        self.protocol = None
        WebsocketConsumer.__init__(self, path)


    def connection_groups(self):
        return ["test"]

    # Connected to websocket.connect
    def connect(self,message):
        try:
            self.protocol = "hello"
        except Exception as exc:
            print ("Unable to accept incoming connection.  Reason: %s" % str(exc))
        self.message.reply_channel.send({"accept": True})


    # Connected to websocket.receive
    def receive(self,text=None, bytes=None):
        text = self.protocol[1] # This throws an error that says protocol is none
        self.send(text=text, bytes=bytes)

    # Connected to websocket.disconnect
    def disconnect(self,message):
        pass
4

2 回答 2

3

基于类的消费者是未实例化的,即每次将新消息路由到消费者时,都会创建一个全新的消费者。因此,无法在消费者本身的消息之间持久化数据。

于 2017-03-02T21:01:17.247 回答
0

你可以和工人一起做。工作人员创建一个不会消失的消费者实例。该实例中的对象也将保留。如果您想访问您的对象,您可以向工作人员发送请求/消息,然后工作人员将它们委托给对象。

于 2021-06-21T10:29:53.057 回答