4

This is my working code:

class RPyCService(rpyc.SlaveService):
    def __init__(self, conn):
        super(RPyCService, self).__init__(conn)
...

from rpyc.utils.server import ThreadedServer
my_threaded_server = ThreadedServer(RPyCService, port=RPYC_SERVER_PORT)
my_threaded_server.start()

However, I would like to pass some arguments to the Services' __init__(). I tried

class RPyCService(rpyc.SlaveService):
    def __init__(self, conn, asdf):
        super(RPyCService, self).__init__(conn)
...

from rpyc.utils.server import ThreadedServer
asdf = "asdf"
my_threaded_server = ThreadedServer(RPyCService(asdf), port=RPYC_SERVER_PORT)
my_threaded_server.start()

but this gave me

Traceback (most recent call last): File "rpyc_server.py", line 145, in my_threaded_server = ThreadedServer(RPyCService(asdf), port=RPYC_SERVER_PORT) TypeError: init() takes exactly 3 arguments (2 given)

I am not sure if I have to add the conn argument somehow too. I was wondering where it comes from anyway ...

Passing an argument to an exposed service method is not an option in my case. I need to pass the argument when the services' __init__() is called.

How can I pass an argument to the __init__() of an rpyc.SlaveService object?

Anand S Kumar
  • 88,551
  • 18
  • 188
  • 176
langlauf.io
  • 3,009
  • 2
  • 28
  • 45

0 Answers0