파이썬에서 RPC를 수행하기위한 현재의 선택은 무엇입니까? [닫은]


132

실제로 Pyro 및 RPyC로 일부 작업을 수행했지만이 두 가지보다 RPC 구현이 더 많습니다. 우리는 그것들의 목록을 만들 수 있습니까?

네이티브 파이썬 기반 프로토콜 :

기본 프로토콜이 많은 RPC 프레임 워크 :

JSON-RPC 기반 프레임 워크 :

비누:

XML-RPC 기반 프레임 워크 :

기타 :


3
그것은 실제로 상황에 달려 있습니다. 인터넷? LAN? 웹 사이트? 분산 계산? 빠른 프로토 타입? 대역폭? 메시지 크기?
ddaa

@silentghost : 완료 나는 때때로 "community wiki"를 설정하지 않는 것을 선호한다. 때때로, 나는 틀렸다. :) @ddaa : Any. 특정 용어로 장단점이있는 경우 일반적인 용어로 RPC에 대해 묻는 것입니다. 목록에 추가하십시오.
edomaur 2009

얼마 전에 "실제"RPC를 수행해야했고 (RFC 1050 종류), 그 선택은 그다지 인상적이지 않아서 대부분의 작업을 직접 수행해야했습니다. 누구든지 그것에 대한 좋은 대안이 있다면 그것에 대해 듣고 싶습니다.
Mattias Nilsson

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에 적절한 오류 처리가 부족하다는 점을 설명합니다.
Denis Otkidach 2009

1
"경고 xmlrpc.server 모듈은 악의적으로 생성 된 데이터에 대해 안전하지 않습니다."
Equidamoid

1
@Equidamoid 신뢰할 수 없거나 인증되지 않은 데이터를 구문 분석해야하는 경우 docs.python.org/2/library/xml.html#xml-vulnerabilities
AmaChefe

17

Apache Thrift 는 Facebook에서 개발 된 언어 간 RPC 옵션입니다. 소켓을 통해 작동하며 함수 서명은 언어 독립적 인 방식으로 텍스트 파일에 정의됩니다.


Thrift는 Python 3을 지원하지 않습니다. 아직 지원되지 않습니다. 부끄러운 일입니다
Roberto

개인적인 의견 : 중고품은 유지 관리의 악몽입니다. 두 개의 Linux 배포판이 비슷한 구성 플래그를 사용하는 것을 보지 못했습니다. 얼마 전 (소스에서 0.10.0을 빌드 할 때), 현재 우분투, 데비안 또는 페도라와 같은 "이국적인"시스템에서 빌드하려면 대부분의 기능을 비활성화해야합니다. 후드 아래의 데이터 유형 변경으로 인해 C ++ 사용이 혼란스러워졌으며 #ifdef12 년 동안 소프트웨어가 1.0.0 릴리스를 준비하고 있음을 확신하지 못했습니다. 나는 많은 언어가 지원되는 것을 좋아하지만 그것이 너무 약하다고 생각합니다.
Marcus Müller

(저는 중형 GNU 프로젝트에서 중고품을 사용합니다. @Roberto, 최소한 Py3를 지원합니다.)
Marcus Müller

나는 사람들 이 문자 그대로 PHP를 C ++에서 Java로, Python에서 Erlang으로, Common Lisp에서 Haskell에서 Swift로 연결하려고하는 언어 프레임 워크가 실제로 필요한지 실제로 생각하도록 격려하고 싶습니다 . 이러한 이유로 여러 언어가 사용되므로 Thrift는 공통 분모를 찾기 위해 타협해야합니다. 나는 대다수의 사람들이 실제로 1 개 또는 2 개의 다른 언어를 연결하기 만하면되기 때문에 더 얇은 프레임 워크가 바람직하다고 주장한다.
Marcus Müller

7

이 질문을 했으므로 python-symmetric-jsonrpc 사용을 시작했습니다 . 파이썬과 비 파이썬 소프트웨어 사이에서 사용할 수 있으며 JSON-RPC 표준을 따를 수 있습니다. 그러나 몇 가지 예가 부족합니다.



3

파이썬으로 SOAP를 작동시키려는 시도가 있지만 많이 테스트하지 않았으므로 좋은지 여부를 말할 수 없습니다.

SOAPy 가 한 예입니다.


2
대부분의 SOAP 프레임 워크를 사용하고 리플렉션 기반 RPC를 직접 수행하기위한 프레임 워크를 구현 한 후에 제 조언은 간단합니다. 그렇게하지 마십시오. 언어 간 의사 소통 + 독립적 인 인터페이스 설명 + 사용자 정의 클래스에 대한 매핑이 필요하지 않은 경우 SOAP의 복잡성은 골치 거리에 지나지 않습니다. 그것을 사용해야하더라도 사용하기에 안전한 SOAP의 부분 집합을 알아야합니다.
개미 Aasma

3
SOAP은 일반적으로 악몽이며 특히 파이썬에서는 악몽입니다. 강요받지 않는 한 사용하지 마십시오.
Denis Otkidach 2009

4
SOAP에 대한 나의 제한된 경험은 여기의 다른 의견에 동의합니다. xmlrpc는 종종 필요한 모든 것을합니다.
Mattias Nilsson

3

새로운 ORB / RPC 프레임 워크의 python 2.6+ 및 3.x 구현 인 Versile Python (VPy)을 개발 입니다. 검토 및 테스트를위한 기능적인 AGPL 개발 릴리스가 제공 됩니다. VPy는 PyRo 및 RPyC와 유사한 기본 Python 기능을 일반 기본 객체 계층 ( 코드 예제 )을 통해 제공합니다. 이 제품은 Versile Platform 구현을 위해 플랫폼 독립적 인 원격 객체 상호 작용을 위해 설계되었습니다 .

전체 공개 : 저는 VPy를 개발하는 회사에서 일합니다.


2

SOAP을 구현하는 ZSI 일 수도 있습니다. 스텁 생성기를 사용했는데 제대로 작동했습니다. 내가 만난 유일한 문제는 HTTPS를 통한 SOAP 수행에 관한 것입니다.


1

omniORB를 놓쳤습니다 . 이것은 완전한 CORBA 구현이므로 CORBA를 지원하는 다른 언어와 대화하는 데 사용할 수도 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.