Каков текущий выбор для выполнения RPC в Python? [закрыто]

132

На самом деле, я поработал с Pyro и RPyC, но реализаций RPC больше, чем этих двух. Можем ли мы составить их список?

Собственные протоколы на основе Python:

Фреймворки RPC с множеством базовых протоколов:

Фреймворки на основе JSON-RPC:

МЫЛО:

Фреймворки на основе XML-RPC:

Другие:

edomaur
источник
3
Это действительно зависит от контекста. Интернет? LAN? Интернет сайт? Распределенные вычисления? Быстрый прототип? Пропускная способность? Размер сообщений?
ddaa
@silentghost: готово. Я предпочитаю не устанавливать "community wiki" по умолчанию, потому что иногда я ошибаюсь :) @ddaa: Any. Я спрашиваю о RPC в целом, если у них есть какие-то плюсы / минусы в определенных контекстах, добавьте их в список.
edomaur
Некоторое время назад у меня была потребность сделать «настоящий» RPC (вроде RFC 1050), и тогда выбор не произвел особого впечатления, поэтому мне пришлось делать большую часть этого самому. Если у кого-то есть хорошая альтернатива, я бы хотел об этом услышать.
Маттиас Нильссон,
Для тех, кто хочет Python-to-Python RPC - последняя версия PyRo 4 не поддерживает SSL, но PyRo 3 все еще поддерживает - оба являются полностью Python, поэтому они поддерживают Python 2, Python 3, PyPy, Jython и IronPython. RPyc поддерживает SSL, в то время как Circuits не упоминает об этом.
RichVel

Ответы:

39

XML-RPC является частью стандартной библиотеки Python:

марб.
источник
+1 к XML-RPC для простоты, даже учитывая, что SimpleXMLRPCServer не имеет надлежащей обработки ошибок.
Денис Откидач
1
«Предупреждение. Модуль xmlrpc.server не защищен от злонамеренно созданных данных.», Поэтому он имеет довольно ограниченные варианты использования.
Equidamoid
1
@Equidamoid Если вам нужно проанализировать ненадежные или неаутентифицированные данные, см. Docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe
17

Apache Thrift - это межъязыковой вариант RPC, разработанный в Facebook. Работает с сокетами, сигнатуры функций определяются в текстовых файлах независимо от языка.

RemcoGerlich
источник
Thrift не поддерживает Python 3, еще не поддерживается, это позор
Роберто
Личный комментарий: Экономия - это кошмар обслуживания. Я не видел, чтобы два дистрибутива Linux даже использовали сопоставимые флаги конфигурации. Не так давно (когда я собирал 0.10.0 из исходных кодов), большинство функций нужно было отключить, чтобы сделать его построенным на «экзотических» системах, таких как текущая Ubuntu, Debian или Fedora. Изменения типов данных под капотом делают использование C ++ беспорядочным #ifdef, и за 12 лет существования им так и не удалось убедить себя, что их программное обеспечение готово к выпуску 1.0.0. Мне нравится огромное количество поддерживаемых языков, но я думаю, что это их слабость: пытаться делать слишком много.
Маркус Мюллер
(Я использую бережливость в проекте GNU среднего размера, который я поддерживаю. @Roberto, бережливость поддерживает Py3, по крайней мере, сейчас.)
Маркус Мюллер,
Я действительно рекомендую людям действительно задуматься о том, действительно ли вам нужна межъязыковая среда, которая буквально пытается соединить PHP с C ++ с Java, с Python, с Erlang, с Common Lisp, с Haskell, с Swift. Это разные языки по какой-то причине, и Thrift нужно идти на компромиссы, чтобы найти общий знаменатель. Я бы сказал, что подавляющему большинству людей действительно нужно соединить только 1 или 2 разных языка, и более тонкая структура будет предпочтительнее.
Маркус Мюллер
7

С тех пор как я задал этот вопрос, я начал использовать python-symric-jsonrpc . Это неплохо, может использоваться между программным обеспечением python и не-python и соответствует стандарту JSON-RPC. Но в нем отсутствуют некоторые примеры.

edomaur
источник
6

Вы можете попробовать Ладон. Он обслуживает сразу несколько протоколов веб-сервера, поэтому вы можете предложить большую гибкость на стороне клиента.

http://pypi.python.org/pypi/ladon

Jakob
источник
3

Есть несколько попыток заставить SOAP работать с python, но я мало его тестировал, поэтому не могу сказать, хорошо он или нет.

SOAPy - один из примеров.

Маттиас Нильссон
источник
2
Я использовал большинство фреймворков SOAP и сам реализовал один для выполнения RPC на основе отражения, поэтому мой совет прост - не делайте этого. Если вам не нужно межъязыковое общение + независимые описания интерфейсов + сопоставление с пользовательскими классами, сложность SOAP будет только головной болью. Даже если вам действительно нужно его использовать, вам понадобится опыт, чтобы знать, какое подмножество SOAP безопасно использовать.
Муравьи Аасма,
3
SOAP - это кошмар в целом и особенно в Python. Не используйте его, если вас не заставят.
Денис Откидач
4
Мой ограниченный опыт работы с SOAP согласуется с другими комментариями здесь. xmlrpc часто делает все, что мне нужно.
Маттиас Нильссон,
3

Мы разрабатываем Versile Python (VPy), реализацию для python 2.6+ и 3.x нового фреймворка ORB / RPC. Доступны функциональные выпуски разработчиков AGPL для обзора и тестирования . VPy имеет собственные возможности Python, аналогичные PyRo и RPyC, через общий уровень собственных объектов ( пример кода ). Продукт разработан для независимого от платформы взаимодействия с удаленными объектами для реализации Versile Platform .

Полное раскрытие информации: я работаю в компании, разрабатывающей VPy.

Versile
источник
2

возможно ZSI, который реализует SOAP. Я использовал генератор заглушек, и он работал нормально. Единственная проблема, с которой я столкнулся, - это выполнение SOAP через HTTPS.

Фил
источник
1

Вы пропустили omniORB . Это довольно полная реализация CORBA, поэтому вы также можете использовать ее для общения с другими языками, поддерживающими CORBA.

Дейв Кирби
источник