«Неподдерживаемый сериализованный класс» при использовании прокси-сервера Pyro5 для получения объектаPython

Программы на Python
Ответить Пред. темаСлед. тема
Гость
 «Неподдерживаемый сериализованный класс» при использовании прокси-сервера Pyro5 для получения объекта

Сообщение Гость »

Я обновляю некоторый код для использования Pyro5 (из Pyro3) и не понимаю, как обращаться с пользовательскими объектами, возвращаемыми из метода, доступ к которому осуществляется через прокси-сервер Pyro. В качестве демонстрации я создал два простых класса в файле classs.py: В Container есть метод, который возвращает экземпляр Item:

Код: Выделить всё

from Pyro5.api import expose

class Container:
@expose
def get_item(self):
return Item()

class Item():
def __str__(self):
return "item"
Пакет serpent может сериализовать и десериализовать объекты типа Item:-

Код: Выделить всё

import serpent
from classes import Item

item = Item()
s = serpent.dumps(item)

item2 = serpent.loads(s)
print(item2)
Запуск этого распечатывает, как и ожидалось:

Код: Выделить всё

{'__class__': 'Item'}
Теперь я создаю демон Pyro5 и регистрирую экземпляр Container:

Код: Выделить всё

from Pyro5.api import Daemon
from classes import Container

daemon = Daemon(host="localhost", port=5555)
daemon.register(Container(),"container")
daemon.requestLoop()
Но когда я пытаюсь получить экземпляр Item через прокси, вот так

Код: Выделить всё

from Pyro5.api import Proxy

container = Proxy("PYRO:container@localhost:5555")
print(container.get_item())
Я получаю исключение

Код: Выделить всё

Pyro5.errors.SerializeError: unsupported serialized class: classes.Item
Если get_item() изменен на возврат строки, все в порядке. Есть ли способ сериализовать и десериализовать мой класс Item без большого количества дополнительного пользовательского кода? Поскольку змей справляется с этим нормально и используется Pyro5, кажется, это не должно быть слишком сложно!

Подробнее здесь: https://stackoverflow.com/questions/781 ... get-object
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»