RPyC を使用してクライアントに接続し、パラメーター オブジェクトを使用して Service 公開メソッドを呼び出します。公開されたメソッドからこのオブジェクトを取得して何かをしたいのですが、このオブジェクトは弱参照されており、その時点でそのデータにアクセスしたい: オブジェクトが "弱参照オブジェクトではない" ことを示す 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