What is the current choice for doing RPC in Python?
PythonRpcPython Problem Overview
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:
- Spyne (see lightning talk)
JSON-RPC based frameworks:
SOAP:
XML-RPC based frameworks:
- XMLRPC, using the xmlrpclib and SimpleXMLRPCServer modules in the standard library.
Others:
Python Solutions
Solution 1 - Python
XML-RPC is part of the Python standard library:
- Python 2: xmlrpclib and SimpleXMLRPCServer
- Python 3: xmlrpc (both client and server)
Solution 2 - Python
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.
Solution 3 - Python
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.
Solution 4 - Python
You could try Ladon. It serves up multiple web server protocols at once so you can offer more flexibility at the client side.
Solution 5 - Python
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.
Solution 6 - Python
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.
Solution 7 - Python
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.
Solution 8 - Python
You missed out [omniORB][1]. This is a pretty full CORBA implementation, so you can also use it to talk to other languages that have CORBA support.
[1]: http://omniorb.sourceforge.net/ "OmniORB"