I'm trying to get the example from "decoupled services" to work. Is there a
mistake in the example, or am I doing something wrong?
Here's my client
Enter code import rpyc
class ClientOpsService(rpyc.Service):
def on_connect(self, conn):
# code that runs when a connection is created
# (to init the service, if needed)
pass
def on_disconnect(self, conn):
# code that runs after the connection has already closed
# (to finalize the service, if needed)
pass
def exposed_ops_ping(self): # this is an exposed method
return "ops-pong"
c = rpyc.connect("localhost", 18861, service = ClientOpsService)
ret=c.root.get_answer()
print(f"ret={ret}")here...
and here's my server
Enter code herimport rpyc
import sys
class ServerService(rpyc.Service):
def exposed_get_answer(self): # this is an exposed method
print(f"{sys._getframe( ).f_code.co_name} called")
r = self._conn.root.ops_ping()
print(r)
return 42
if __name__ == "__main__":
client_service=None
client_func=None
from rpyc.utils.server import ThreadedServer
t = ThreadedServer(ServerService(), port=18861)
t.start()e...
and the result:
Enter code heredan@dan-om-linux:~/work/om_v1.0/src/control/sample_rpyc$
python my_client.py
Traceback (most recent call last):
File "my_client.py", line 25, in <module>
ret=c.root.get_answer()
File "/home/dan/.local/lib/python3.6/site-packages/rpyc/core/netref.py",
line 199, in __call__
return syncreq(_self, consts.HANDLE_CALL, args, kwargs)
File "/home/dan/.local/lib/python3.6/site-packages/rpyc/core/netref.py",
line 75, in syncreq
return conn.sync_request(handler, proxy, *args)
File "/home/dan/.local/lib/python3.6/site-packages/rpyc/core/protocol.py",
line 471, in sync_request
return self.async_request(handler, *args, timeout=timeout).value
File "/home/dan/.local/lib/python3.6/site-packages/rpyc/core/async_.py",
line 97, in value
raise self._obj
AttributeError: 'ServerService' object has no attribute '_conn'
========= Remote Traceback (1) =========
Traceback (most recent call last):
File "/home/dan/.local/lib/python3.6/site-packages/rpyc/core/protocol.py",
line 329, in _dispatch_request
res = self._HANDLERS[handler](self, *args)
File "/home/dan/.local/lib/python3.6/site-packages/rpyc/core/protocol.py",
line 590, in _handle_call
return obj(*args, **dict(kwargs))
File "my_service.py", line 9, in exposed_get_answer
r = self._conn.root.ops_ping()
AttributeError: 'ServerService' object has no attribute '_conn'
...
The documentation
page https://rpyc.readthedocs.io/en/latest/docs/services.html#services
say that the server can call self._conn.root.foo() which is exposed by the
client service, yes soemthing is wrong obviously
--
---
You received this message because you are subscribed to the Google Groups
"rpyc" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.