136
votes

Actually, I've done some work with Pyro and RPyC, but there is more RPC implementation than these two. Can we make a list of them?

Native Python-based protocols:

RPC frameworks with a lot of underlying protocols:

JSON-RPC based frameworks:

SOAP:

XML-RPC based frameworks:

Others:

8
It really depends on the context. Internet? LAN? Website? Distributed computation? Quick prototype? Bandwidth? Size of messages? - ddaa
@silentghost : done. I prefer not to set "community wiki" by default, because sometimes, I am wrong :) @ddaa : Any. I am asking about RPC in general terms, if they have some pros/cons in specific contexts, please add them to the list. - edomaur
I had the need to do "real" RPC a little while ago (The RFC 1050 kind) and the choices then didn't impress much, so I ended up having to do most of it myself. If anyone has a good alternative to that, I'd like to hear about it. - Mattias Nilsson
For those wanting Python-to-Python RPC - PyRo 4 latest version doesn't support SSL, but PyRo 3 still does - both are all-Python so they support Python 2, Python 3, PyPy, Jython, and IronPython. RPyc does support SSL, while Circuits doesn't mention this. - RichVel
For simple applications you could consider PyMQ which supports synchronous RPC over redis or posix IPC. - thrau

8 Answers

39
votes

XML-RPC is part of the Python standard library:

17
votes

Apache Thrift is a cross-language RPC option developed at Facebook. Works over sockets, function signatures are defined in text files in a language-independent way.

7
votes

Since I've asked this question, I've started using python-symmetric-jsonrpc. It is quite good, can be used between python and non-python software and follow the JSON-RPC standard. But it lacks some examples.

6
votes

You could try Ladon. It serves up multiple web server protocols at once so you can offer more flexibility at the client side.

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

3
votes

There are some attempts at making SOAP work with python, but I haven't tested it much so I can't say if it is good or not.

SOAPy is one example.

3
votes

We are developing Versile Python (VPy), an implementation for python 2.6+ and 3.x of a new ORB/RPC framework. Functional AGPL dev releases for review and testing are available. VPy has native python capabilities similar to PyRo and RPyC via a general native objects layer (code example). The product is designed for platform-independent remote object interaction for implementations of Versile Platform.

Full disclosure: I work for the company developing VPy.

2
votes

maybe ZSI which implements SOAP. I used the stub generator and It worked properly. The only problem I encountered is about doing SOAP throught HTTPS.

1
votes

You missed out omniORB. This is a pretty full CORBA implementation, so you can also use it to talk to other languages that have CORBA support.