Python - Создать новый URI для определенного класса в Pyro4 - PullRequest
0 голосов
/ 21 октября 2018

Я создавал приложение для чата, в котором клиенты, подключенные к серверу, могут иметь приватный чат с помощью Pyro4.Клиенты регистрируются на сервере, чтобы указать всем, что они доступны для приватного чата.Теперь клиенты могут приглашать других клиентов в сеанс приватного чата, используя RMI для обмена сообщениями напрямую.Ниже приведен код моего класса.

@Pyro4.expose
@Pyro4.behavior(instance_mode="single")
class Messaging(object):

def __init__(self):
    self._connection  = ''
    self._messages_to_server = []
    self._messages_to_client = []


def read_messages_to_server(self):
    try:
        return self._messages_to_server.pop(0)

    except:
        return FALSE

def read_messages_to_client(self):
    try:
        return self._messages_to_client.pop(0)            
    except:
        return FALSE


def send_to_server(self, message):
    self._messages_to_server.append(message)


def send_to_client(self, message):
    self._messages_to_client.append(message)


def set_connection(self, allow):
    self._connection = allow

def get_connection(self):
    return self._connection

Всякий раз, когда один клиент приглашает одного клиента для приватного чата, мой код повторяется ниже, чтобы создать URI.

daemon = Pyro4.Daemon()       
uri_str = daemon.register(Messaging())  
daemon.requestLoop()

Работает нормально,первый раз это было запущено.Но для второго запроса приватного чата выдает ошибку:

Pyro4.errors.DaemonError: object or class already has a Pyro id

Как это исправить?Я хочу создать другой URI для другой пары клиентов, устанавливающих частное соединение?

...