SpoonRPC Logo SpoonRPC

SpoonRPC is a python module that provides a distributed communication system for interprocess communication. It doesn't actually provide RPC at the moment, because message passing turned out to be a lot easier, and probably more useful anyway.

On to the features:

SpoonRPC provides the ability to connect many different processes together and send messages between them. The processes can be running across any number of hosts. Security is up to the implementation, but by using SSL or paramiko adding a layer of security is easy.

A message consists of a string to identify the message type, and an arbitrary object attachment. Messages can be dispatched, by the message type, to functions by using a decorator. Arbitrary python objects are serialized using BER, however only the data members of the object are serialized. Code cannot be serialized, this is a feature, not an oversight. Each process must have a copy of the class for the objects serialized.

Each node has one or more links to other nodes which forms a larger network of nodes. Messages are routed using a dynamic routing algorithm, the most efficient route is chosen as nodes and links come and go. This allows nodes that do not have a direct connection between eachother to communicate.

Where it's headed.
This contains a few of the ideas and plans that I've got for SpoonRPC. The list is generally in order of priority.

Given that SpoonRPC is called SpoonRPC, an RPC system is in the works. It will be implemented on top of the messaging system.

A trac setup for the project, some actual, human written docs and a mailing list.

An optional garaunteed delivery, garaunteed order, messaging system as an alternative to the current non-reliable system.

Optional secure messaging system that adds an HMAC to each message and verifies agianst a supplied keystore. This will at least ensure that the src node of a message is correct and that the message has not been modified.

A naming system to allow for nodes with different capabilities to be located on a network.



Any operating system that python2.4 works on. Only tested on Linux so far, however there's no reason it should have any problems on other platforms.

Here are the API docs from epydoc.
As promised, there is now a simple HOWTO that explains the basics.
The mailing list archives may be of some help.
Finally, have a look on our Trac instance.

The bzr (Bazaar) repository is available here:

$ bzr branch http://www.zarrf.com/SpoonRPC/bzr/SpoonRPC

Contributions are welcome, either send an email with a patch, or a location to your branch for merging.

I'm using trac to handle the project management of SpoonRPC now. I'll try to make sure that there are specs for new features so that people may comment and offer other ideas. The ticketting system is also there, so if you've found a problem, please create a ticket for it. Trac wiki and ticketting for SpoonRPC

Please send all questions, patches or suggestions to the mailing list.