SimpleRPC is a simple RPC package for Python, supporting both client and server functions through definition of a single class. To implement a client and server, merely extend the SimpleRPC class and define the RPC functions as methods of this class, decorated with the @remote decorator. (Note that the methods close(), ping(), connect(), listen(), and serve() are reserved, as are the host, port, authkey, mode, and conn instance attributes and the connection_class class attribute.) To run the server, simply call the listen() method, which will loop forever, accepting clients and using eventlet to spawn a thread to serve them (implemented using the serve() method). For the client, simply calling the RPC method is sufficient, but the connection can be explicitly initialized by calling the connect() method. The connection can be closed by calling close(), and a round-trip time can be obtained by using the ping() method. Note that all function arguments and results must be serializable by the Python json package. (RPC methods may raise exceptions, as long as the exception class is available on the client side; if it is not, the exception will turn into an ImportError.)
Note that SimpleRPC is so simple that no effort is made to use a secure connection type, such as SSL. For this reason, the server should be started on 127.0.0.1, to prevent snooping. (Clients do send an “authkey” to the server, which the server uses to authorize the client, but this “authkey” is sent as plain text.) It is possible to use a more secure connection technology, such as SSL, by extending the Connection class and setting the connection_class class attribute of the SimpleRPC subclass to that Connection subclass.