я подключаюсь к клиенту с помощью RPyC и вызываю метод, предоставляемый службой, с объектом параметра. Я хочу взять этот объект из открытого метода и что-то с ним сделать, но этот объект имеет слабую ссылку, и в то время, когда я хочу получить доступ к его данным: я получаю ReferenceError, который говорит мне, что объект «объект со слабой ссылкой не больше не существует"
Как защитить объект со слабой ссылкой от сборки мусора? Как я могу изменить его, чтобы он был строго ссылочным?
server.py (отправка сообщений)
conn = rpyc.connect(ip,port)
bgsrv = rpyc.BgServingThread(conn)
conn.root.my_remote_method(a, b, c) # a,b,c are integer, strings etc.
time.sleep(0.2)
bgsrv.stop()
conn.close()
client.py (обработка данных и помещение их в очередь)
class MessageService(Service):
def exposed_my_remote_method(self, a, b, c):
ThreadedClient.queue.put([a,b,c])
other.py (чтение очереди)
def read_queue(self):
""" Handle all the messages currently in the queue (if any) """
while ThreadedClient.queue.qsize():
try:
msg = ThreadedClient.queue.get(0)
self.read_message(msg)
except Queue.Empty:
pass
def read_message(self, msg):
# do something with the data of a, b, c
res = msg[0] + xy # ReferenceError