[IPython-dev] [sage-notebook] Re: Using Google App Engine channels instead of zmq in new IPython

Jason Grout jason-sage at creativetrax.com
Mon Feb 13 18:01:17 EST 2012

On 2/13/12 4:48 PM, Fernando Perez wrote:
> On Mon, Feb 13, 2012 at 2:32 PM, Brian Granger<ellisonbg at gmail.com>  wrote:
>> At this point, ZeroMQ is not a minor implementation detail of IPython,
>> it is really our secret sauce.  ZeroMQ has abstractions, such as
>> queues and messaging patterns, that go beyond simple point to point
>> messaging and we rely on those throughout the code base.  I don't see
>> how ZeroMQ could be replaced without rewriting good parts of IPython.
> Very true.  Furthermore, we are working on integrating more and more
> the code that runs a single interactive kernel with that used by
> engines in a parallel setting, to make use of the parallel tools more
> seamless with the rest of our clients (notebook, qt console, etc).
> And the parallel code is pretty much unthinkable without zeromq, as
> this diagram should make fairly clear:
> http://ipython.org/ipython-doc/dev/development/parallel_connections.html

Those are some very nice diagrams!

> So I concur with Brian, that pulling zmq out of ipython is probably
> not a very realistic goal, and at least it's not one that we have in
> our radar to commit any effort towards.  Obviously the code is all
> there, and if you find ways of using IPython successfully for Sage
> without zmq, that's great.  I just think that from our side, there
> won't be work put in that direction, given how many other things are
> on our plate and how much we continue to build *upon* zmq rather than
> wanting to move away from it.

Thanks for the feedback.  We already have a websocket<->zmq bridge, 
right?  I think now that GAE channels could basically replace the 
websocket portion.  I assume that would be much easier?  So the basic 
architecture would be:

browser <-GAE channel-> Sage server on GAE <-GAE channel-> (bridge 
<-ZMQ-> IPython kernel)

where the part in parentheses would be the worker running on a compute 
server, and the shim is the bridge between GAE channels and zmq.  Does 
that seem more reasonable?  What does the architecture of your websocket 
bridge look like?



More information about the IPython-dev mailing list