Який поточний вибір робити RPC в Python? [зачинено]


132

Насправді я провів деяку роботу з Pyro та RPyC, але реалізація RPC є більшою, ніж ці два. Чи можемо ми скласти їх список?

Протоколи на основі Native Python:

Рамки RPC з безліччю базових протоколів:

Кадри на базі JSON-RPC:

Мило:

Каркаси на основі XML-RPC:

Інші:


3
Це дійсно залежить від контексту. Інтернет? LAN? Веб-сайт? Розподілене обчислення? Швидкий прототип? Пропускна здатність? Розмір повідомлень?
ddaa

@silentghost: зроблено. Я вважаю за краще не встановлювати "wiki спільноти" за замовчуванням, тому що іноді я помиляюся :) @ddaa: Будь-який. Я запитую про 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 Якщо вам потрібно проаналізувати недовірені або неаутентифіковані
AmaChefe

17

Apache Thrift - це міжмовна версія RPC, розроблена у Facebook. Працює над сокетами, підписи функцій визначаються в текстових файлах незалежно від мови.


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. Чомусь це різні мови, і бережливість потребує компромісів, щоб знайти спільний знаменник. Я заперечую, що переважній більшості людей дійсно потрібно лише з'єднати 1 або 2 різні мови, і більш тонка рамка буде кращою.
Маркус Мюллер

7

Оскільки я задав це питання, я почав використовувати python-symmetric-jsonrpc . Це досить добре, може використовуватися між програмним забезпеченням python та non-python та дотримуватися стандарту JSON-RPC. Але бракує деяких прикладів.


6

Ви можете спробувати Ладона. Він обслуговує декілька протоколів веб-сервера одночасно, щоб ви могли запропонувати більше гнучкості на стороні клієнта.

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


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 .

Повне розкриття: Я працюю в компанії, що розробляє VPy.


2

можливо ZSI, який реалізує SOAP. Я використав генератор заглушки, і він працював належним чином. Єдина проблема, з якою я стикався, - це робити HTTPS через SOAP.


1

Ви пропустили omniORB . Це досить повна реалізація CORBA, тому ви також можете використовувати її для розмови з іншими мовами, які мають підтримку CORBA.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.