Jaki jest obecnie wybór do wykonywania RPC w Pythonie? [Zamknięte]

132

Właściwie wykonałem trochę pracy z Pyro i RPyC, ale jest więcej implementacji RPC niż te dwa. Czy możemy zrobić ich listę?

Natywne protokoły oparte na Pythonie:

Struktury RPC z wieloma bazowymi protokołami:

Struktury oparte na JSON-RPC:

MYDŁO:

Struktury oparte na XML-RPC:

Inne:

edomaur
źródło
3
To naprawdę zależy od kontekstu. Internet? LAN? Stronie internetowej? Rozproszone obliczenia? Szybki prototyp? Pasmo? Rozmiar wiadomości?
ddaa
@silentghost: gotowe. Wolę nie ustawiać domyślnie "wiki społeczności", ponieważ czasami się mylę :) @ddaa: Any. Pytam ogólnie o RPC, jeśli mają jakieś wady / zalety w określonych kontekstach, proszę dodać je do listy.
edomaur
Miałem potrzebę zrobienia „prawdziwego” RPC jakiś czas temu (w rodzaju RFC 1050) i wybory wtedy nie zrobiły większego wrażenia, więc większość musiałem zrobić sam. Jeśli ktoś ma na to dobrą alternatywę, chciałbym o tym usłyszeć.
Mattias Nilsson
Dla tych, którzy chcą Python-to-Python RPC - najnowsza wersja PyRo 4 nie obsługuje SSL, ale PyRo 3 nadal obsługuje - oba są w całości w Pythonie, więc obsługują Python 2, Python 3, PyPy, Jython i IronPython. RPyc obsługuje SSL, podczas gdy Circuits o tym nie wspomina.
RichVel,
W przypadku prostych aplikacji można rozważyć PyMQ, który obsługuje synchroniczne RPC przez redis lub posix IPC.
czwartek,

Odpowiedzi:

39

XML-RPC jest częścią standardowej biblioteki Pythona:

marbs
źródło
+1 do XML-RPC dla prostoty, nawet księgowania, że ​​SimpleXMLRPCServer nie obsługuje właściwej obsługi błędów.
Denis Otkidach
1
„Ostrzeżenie Moduł xmlrpc.server nie jest zabezpieczony przed złośliwie skonstruowanymi danymi”, więc ma dość ograniczone przypadki użycia.
Equidamoid
1
@Equidamoid Jeśli chcesz przeanalizować niezaufane lub nieuwierzytelnione dane, zobacz docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe
17

Apache Thrift to wielojęzyczna opcja RPC opracowana na Facebooku. Działa na gniazdach, sygnatury funkcji są definiowane w plikach tekstowych w sposób niezależny od języka.

RemcoGerlich
źródło
Thrift nie obsługuje Pythona 3 nie jest jeszcze obsługiwany, a szkoda
Roberto
Osobisty komentarz: Oszczędność to koszmar utrzymania. Nie widziałem, aby dwie dystrybucje Linuksa używały porównywalnych flag konfiguracyjnych. Nie tak dawno temu (kiedy budowałem wersję 0.10.0 ze źródeł) większość funkcji musiała zostać wyłączona, aby można było budować na „egzotycznych” systemach, takich jak obecny Ubuntu, Debian czy Fedora. Zmiany typu danych pod maską sprawiają, że korzystanie z C ++ jest bałaganem #ifdef, a przez 12 lat istnienia nie udało im się przekonać samych siebie, że ich oprogramowanie jest gotowe na wydanie 1.0.0. Podoba mi się ogromna liczba obsługiwanych języków, ale myślę, że to ich słabość: próbowanie za dużo.
Marcus Müller
(Używam oszczędności w prowadzonym przeze mnie projekcie GNU średniej wielkości. @Roberto, oszczędność wspiera Py3, przynajmniej do tej pory.)
Marcus Müller,
Naprawdę zachęcałbym ludzi do zastanowienia się, czy naprawdę potrzebujesz międzyjęzykowego frameworka, który dosłownie próbuje połączyć PHP z C ++, Javą, Pythonem, Erlangiem, Common Lispem, Haskellem i Swiftem. Nie bez powodu są to różne języki, a firma Thrift musi iść na kompromisy, aby znaleźć wspólny mianownik. Twierdzę, że ogromna większość ludzi naprawdę potrzebuje tylko połączyć 1 lub 2 różne języki, a bardziej szczuplejsza struktura byłaby lepsza.
Marcus Müller
7

Odkąd zadałem to pytanie, zacząłem używać python-symmetric-jsonrpc . Jest całkiem niezły, może być używany między oprogramowaniem Python i innym niż Python i jest zgodny ze standardem JSON-RPC. Ale brakuje kilku przykładów.

edomaur
źródło
6

Możesz spróbować Ladona. Obsługuje jednocześnie wiele protokołów serwera WWW, dzięki czemu możesz zaoferować większą elastyczność po stronie klienta.

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

Jakob
źródło
3

Jest kilka prób, aby SOAP działał z Pythonem, ale nie testowałem go zbyt wiele, więc nie mogę powiedzieć, czy jest dobry, czy nie.

SOAPy jest jednym z przykładów.

Mattias Nilsson
źródło
2
Po użyciu większości frameworków SOAP i zaimplementowaniu jednego do samodzielnego wykonywania RPC opartego na refleksji, moja rada jest prosta - nie rób tego. Jeśli nie potrzebujesz komunikacji międzyjęzykowej + niezależnych opisów interfejsów + mapowania na klasy niestandardowe, złożoność protokołu SOAP będzie tylko uciążliwa. Nawet jeśli musisz go używać, będziesz potrzebować doświadczenia, aby wiedzieć, jaki podzbiór protokołu SOAP jest bezpieczny w użyciu.
Ants Aasma,
3
SOAP to koszmar w ogóle, a zwłaszcza w Pythonie. Nie używaj go, chyba że jesteś do tego zmuszony.
Denis Otkidach
4
Moje ograniczone doświadczenie z SOAP zgadza się z innymi komentarzami tutaj. xmlrpc często robi wszystko, czego potrzebuję.
Mattias Nilsson
3

Pracujemy nad Versile Python (VPy), implementacją dla Pythona 2.6+ i 3.x nowego frameworka ORB / RPC. Funkcjonalne wersje AGPL dev przeglądów i testów są dostępne . VPy ma natywne możliwości Pythona podobne do PyRo i RPyC za pośrednictwem ogólnej warstwy obiektów natywnych ( przykład kodu ). Produkt jest przeznaczony do zdalnej interakcji z obiektami niezależnej od platformy w implementacjach Versile Platform .

Pełne ujawnienie: Pracuję dla firmy rozwijającej VPy.

Wszechstronny
źródło
2

może ZSI, który implementuje SOAP. Użyłem generatora stubów i działało poprawnie. Jedyny problem jaki napotkałem dotyczy robienia SOAP przez HTTPS.

Phil
źródło
1

Przegapiłeś omniORB . Jest to całkiem pełna implementacja CORBA, więc możesz jej również używać do rozmawiania z innymi językami, które obsługują CORBA.

Dave Kirby
źródło