клиентский метод вызова сервера rpyc - PullRequest
0 голосов
/ 21 февраля 2019

В настоящее время я использую rpyc для создания сервера и нескольких клиентов, которые будут к нему подключаться.У меня есть данные в клиентах, которые я хотел бы отправить на сервер для дальнейшей обработки, и я хотел бы сделать это с сервером, вызывающим клиентский метод всякий раз, когда клиент подключается к серверу.Из их руководства говорится, что клиенты могут предоставлять свои услуги серверу, но я получаю ошибки.

Код для моего сервера:

import rpyc

class TestService(rpyc.Service):
    def on_connect(self, conn):
        conn.root.example()

if __name__ == "__main__":
    from rpyc.utils.server import ThreadedServer
    t = ThreadedServer(TestService, port=18861, auto_register=True)
    t.start()

Код для моего клиента:

import rpyc

class ClientService(rpyc.Service):
    def exposed_example(self):
        print "example"

if __name__ == "__main__":
    try:
        rpyc.discover("test")
        c = rpyc.connect_by_service("test", service=ClientService)
        c.close()
    except:
        print "could not find server"

Клиент может подключиться к серверу, но в потоке возникнет исключительная ситуация: ошибка EOFError («поток был закрыт»).Он жалуется на строку conn.root.example (), и я не знаю, какой будет правильный синтаксис, а в руководстве не указывается вообще.

Любая помощь будет высоко оценена!

...