Каковы плюсы и минусы библиотек PyRo и RPyC python?

Я ищу механизм обработки удаленных процедур для Python, и я обнаружил, что PyRo (удаленный объект Python) и RPyC (Remote Python Call) - это то, что я ищу.

Однако мне любопытно узнать, как они сравниваются друг с другом и каковы их плюсы и минусы?

Ответы

Ответ 1

Я лично считаю их примерно эквивалентными, но автор RPyC (здесь) претендует на более простоту (и, возможно, для кого-то не все, что используется для распределения вычислений он получил точку, я, возможно, слишком привык к этому, чтобы сделать хорошего судьи;-). Цитируя его...:

хотя PYRO имеет длинный список значительные проекты в его резюме, я найти настройку сервера тоже сложно, если учесть количество необходимого кода, регистрация объекты, запущенные серверы имен и т.д. Не говоря уже о количестве различных которые вы должны учитывать (события, переименование, с именем или без имени серверы, прокси-сервер и атрибут-прокси, имена должны быть уникальными и т.д.). А также он ограничен (удаленные объекты должны быть поэтому вы не можете работать с удаленные файлы и т.д.). В целом, PYRO имеет слишком много особых случаев и вообще слишком сложно (да, я считаем это сложным). Итак, из Конечно, я не независимый рецензент - но судите сами. Разве RPYC не проще и чище?

На другой стороне монеты PyRO пытается обеспечить некоторую безопасность (заявка автора RPyC слишком слаба и в основе лежит многие из заявленных сложностей PyRO).

Более независимый голос Дэвида Мерца предлагает здесь хорошее объяснение RPyC (PyRO было намного дольше, и Дэвид указывает на предыдущие статьи охватывающий его). "Классический режим" - это общая и простая и нулевая защита, "по существу идентичная Pyro (без предустановленной инфраструктуры безопасности Pyro)"; "режим услуг" более безопасен (все, что явно запрещено, по умолчанию запрещено), и, по словам Дэвида, "сервисный режим - это, по сути, RPC (например, XML_RPC), по модулю некоторые подробности о вызовах и реализации". Для меня это справедливая оценка.

Кстати, я не особенно люблю одноязычные RPC-системы - даже если Python охватывает 99% моих потребностей (и это не совсем так высоко;-), мне очень нравится, что я могу использовать любой язык для оставшиеся 1%... Я не хочу давать это на уровне RPC! -) Я бы предпочел сделать, например JSON-RPC через этот модуль или тому подобное...! -.)

Ответ 2

YMMV, но вот мои результаты оценки RPyC, Pyro4 и ZeroRPC для использования в предстоящем проекте. Обратите внимание, что нет углубленных тестов, и это не является углубленным обзором, а только мои заметки о том, насколько хорошо каждый из них работает для нужд моего будущего проекта.

ZeroRPC:

  • довольно много зависимостей
  • очень молодой проект (основная поддержка от dotCloud)
  • очень мало документации
  • не может получить доступ к атрибутам удаленного объекта, только методы
  • Из-за отсутствия доступа к атрибутам завершение вкладки IPython не работает на удаленных объектах

Pyro4:

  • Поддержка Python3
  • Хорошая, обильная документация
  • зрелый проект
  • Нет доступа к атрибутам/завершение вкладки IPython

Pyro3:

  • поддержка доступа к атрибутам (заявлено в документации; не подтверждено)
  • Нет поддержки Python3

RPyC:

  • доступ к атрибутам, завершение вкладки IPython на удаленных объектах
  • Поддержка Python3 (заявлено в документации; еще не подтверждено)
  • пятнистая документация

FWIW:

Я склонен любить RPyC (возможно, потому что это был мой первый? ;-), но его документация скудна. Это было мое первое знакомство с RPC, и мне потребовалось много времени, чтобы понять, как заставить все работать. Автор (Томер) очень полезен и отвечает на вопросы в списке Google RPyC.

Если вы новичок в RPC, я бы посоветовал начать с Pyro и воспользоваться его обширной документацией, чтобы изучить веревки. Переходите к RPyC, ZeroRPC и т.д. В соответствии с вашими потребностями.