[IPython-dev] messaging protocol

Jason Grout jason-sage at creativetrax.com
Thu Apr 7 21:27:09 EDT 2011

I've been pondering the messaging spec quite a bit over the last few 
weeks and meshing it in with a project in Sage (a single-cell server, 
like a one-off ipython or sage web notebook).  Our architecture is that 
we have a big database sitting on the server side that basically acts as 
a cache of the zeromq messages between the kernel and the web client. It 
is easy enough to store the messages in the database, but we have a 
problem that you guys don't have since you use zeromq end-to-end.  Once 
we put a list of messages into the database, we don't know what the 
right order for the messages is.  So here is a 
suggestion/request/proposal for the API:

PROPOSAL: Can we add another field to the header of a, a msg_order (or 
msg_counter?) field, which (across messages with the same 
header['session']) is guaranteed to be an increasing integer signifying 
the order of messages?

You might ask why we don't just use the msg_id field for this.  Well, it 
seems nice for us to make the msg_id be a mongodb id object, which is 
just a hash.  It seems elegant to let the client or server dictate what 
how the msg_id's are formed with no insistence on a particular format or 
structure for the msg_id, other than it be unique among messages in the 
same session.

You must have had a related problem storing history, though.  How did 
you sort the messages in the history database?

On the other hand, since the proposed msg_order *is* guaranteed to be 
unique across all messages in a session, maybe there's nothing lost in 
(just us?) insisting that the msg_id be an increasing integer sequence.



Jason Grout

More information about the IPython-dev mailing list