Писифт клиент и сервер - PullRequest
       3

Писифт клиент и сервер

0 голосов
/ 26 марта 2020

Этот вопрос касается моего проекта по федеративному обучению с использованием библиотеки pysyft, но те, кто владеет веб-сокетами, тоже могут помочь, поскольку pysyft использует веб-сокеты для взаимодействия сервера и клиента.

Для начала, У меня есть проблема, касающаяся взаимодействия сервера и клиента. Я создал панель управления для запуска сервера pysyft и клиента pysyft, который подключается к вышеупомянутому серверу. Однако у меня есть сценарий, в котором я хочу, чтобы клиент время от времени отключался от сервера (ручное отключение), чтобы выполнять изменения параметров модели.

Моим решением было выполнить close () для pysyft websocketClientWorker, который вызывает функцию shutdown () для объекта websocket. Предполагается, что выполнение этого закроет соединение между клиентом и сервером. После каких-либо изменений параметров модели были сделаны. Я заново создам объект pysyft websocketClientWorker и снова проведу обучение модели. Однако я столкнулся с проблемой: websocket._exceptions.WebSocketConnectionClosedException: сокет уже закрыт. Это исключение выдается (несмотря на успешное подключение к серверу) во время итерации загрузчика данных.

Возможно, есть лучший способ go об этом сценарии, или я упускаю определенное фундаментальное понимание веб-сокетов. Любая помощь будет оценена. Спасибо:)

1 Ответ

0 голосов
/ 27 марта 2020

Мне удалось найти решение моего вопроса после нескольких дней тщательной проверки библиотеки pysyft. Оказывается, нет проблем с подключением к Websocket и повторным подключением. Очевидно, суперкласс websocketclient (baseworker) содержит рабочий реестр, который кэширует объекты websocketclient, когда для переменной auto_add установлено значение True. Этот реестр индексируется идентификатором websocketclient, и, следовательно, воссоздание объекта websocketclient не будет заменено в реестре, если идентификатор совпадает. Следовательно, это объясняет проблему «сокет уже закрыт», так как он ссылается на предыдущее соединение websocketclient, которое я закрыл. Решением было просто вызвать метод remove_worker_from_local_worker_registry() для объекта websocketclient перед закрытием соединения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...