PyHttpRPC is a Python to Python Remote Procedure Call (RPC) solution that uses the HTTP protocol for communication. Unlike the vast majority of Python RPC mechanisms, it is capable of transporting Python objects by value to the other side while retaining type information, even for user defined classes.
Additional features like HTTPS, gzip compression and configurable timeouts are available depending on the server and client of choice. Serialization security issues are handled by allowing users to define which modules/classes can be automatically imported on deserialization.
Several alternative clients are available:
- A client using the standard library httplib module
- A client based on the standard library urllib2 module
- A client using httplib2
- An asynchronous client using Twisted
Servers are provided as controllers/handlers for several web frameworks:
- Twisted (as a twisted.web.Resource)
- Plain WSGI application (runs on top of any WSGI server, including standard library's wsgiref)
Two alternative serialization mechanisms are available:
- Pickle (Python standard library, default)
- AMF using PyAMF
Installation on Python 3.x requires distribute due to the required 2to3 conversion.