Yeah, this makes more sense now that I have dug into the code a little bit.   What I basically wanted was it to always use the existing kernel if there was one, if not then spawn a new one, so it looks like I&#39;ll just have to tweak the template and handlers a little bit to get what I want I think.<div>
<br></div><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><br></span></div>---------------------------------<div>
Anthony Oliver</div><div>Chief Technology Officer</div><div><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"><a href="http://www.ingenuitas.com/" target="_blank">http://www.ingenuitas.com</a></span></div>
<div>(906) 289-8169</div><div><a href="mailto:anthony@ingenuitas.com" target="_blank"><font color="#000000"><span style="border-collapse:collapse;font-family:arial,sans-serif;font-size:13px"></span>anthony@ingenuitas.com</font></a></div>
<div>---------------------------------</div></span><br>
<br><br><div class="gmail_quote">On Fri, Jan 20, 2012 at 1:38 PM, Brian Granger <span dir="ltr">&lt;<a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Anthony,<br>
<div class="im"><br>
On Thu, Jan 19, 2012 at 11:30 AM, Anthony Oliver &lt;<a href="mailto:anthony@ingenuitas.com">anthony@ingenuitas.com</a>&gt; wrote:<br>
&gt; Brian,<br>
&gt;<br>
&gt; No this helps a lot.  I want the functionality and have looked at a lot of<br>
&gt; other apps but we have been using ipython before the notebook implementation<br>
&gt; and feel it&#39;s way better than anything else out there.  I spent some more<br>
&gt; time yesterday poking around the code.  I think I can pull out what I don&#39;t<br>
&gt; want from it.  In reality I basically want all the same functionality as the<br>
&gt; notebook, I&#39;m even fine with keeping a history, etc.  Basically I think I<br>
&gt; just need to tell it to use the same kernel every time instead of firing up<br>
&gt; another instance.  Does this sound correct? Or would the better way be to<br>
&gt; start a new kernel instance and kill any old ones saved?<br>
<br>
</div>The current implementation of the notebook already has this.  When you<br>
open a give notebook, it will start a kernel.  If you close that<br>
notebook and open it later, the same exact kernel will still be<br>
running and will be used.  Kernels run as long as the notebook server<br>
is run.  Is this what you are after?  If not could you better describe<br>
what you mean.  Do you want one kernel for *all* notebook?  One per<br>
notebook?<br>
<div class="im"><br>
&gt; I guess the TL;DR is I want a singleton instance of a notebook. ;-)<br>
&gt; The way it sounds it isn&#39;t possible with the way it&#39;s designed.  We are<br>
&gt; currently using cherrypy, not sure what it would take to port over to this,<br>
&gt; but we can use tornado if that is a big staple as well.<br>
&gt;<br>
&gt; p.s. Thanks to the ipython team for all your work, anytime I jump on a<br>
&gt; system without ipython now it makes me a sad panda.<br>
<br>
</div>Great, glad you are enjoying it!<br>
<br>
Cheers,<br>
<br>
Brian<br>
<div class="HOEnZb"><div class="h5"><br>
&gt;<br>
&gt; ---------------------------------<br>
&gt; Anthony Oliver<br>
&gt; Chief Technology Officer<br>
&gt; <a href="http://www.ingenuitas.com" target="_blank">http://www.ingenuitas.com</a><br>
&gt; <a href="tel:%28906%29%20289-8169" value="+19062898169">(906) 289-8169</a><br>
&gt; <a href="mailto:anthony@ingenuitas.com">anthony@ingenuitas.com</a><br>
&gt; ---------------------------------<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; On Wed, Jan 18, 2012 at 1:19 PM, Brian Granger &lt;<a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a>&gt; wrote:<br>
&gt;&gt;<br>
&gt;&gt; On Tue, Jan 17, 2012 at 1:45 PM, Anthony Oliver &lt;<a href="mailto:anthony@ingenuitas.com">anthony@ingenuitas.com</a>&gt;<br>
&gt;&gt; wrote:<br>
&gt;&gt; &gt; Is there a correct way to just build the shell that could work within a<br>
&gt;&gt; &gt; browser, or an example somewhere?<br>
&gt;&gt;<br>
&gt;&gt; You would need to build a custom web application from the ground up.<br>
&gt;&gt; The best example is the current notebook code.  It shows how to use<br>
&gt;&gt; ZeroMQ to communicate with IPython kernels using JSON messages.  But<br>
&gt;&gt; the code is not really designed to be used as a library.  We plan on<br>
&gt;&gt; moving in that direction, but it will take time.<br>
&gt;&gt;<br>
&gt;&gt; &gt; I basically want the functionality of the notebook.  My problem with<br>
&gt;&gt; &gt; using<br>
&gt;&gt; &gt; notebooks is that we are currently using ipython as an embedded shell<br>
&gt;&gt; &gt; which<br>
&gt;&gt; &gt; is awesome. But we want to extend it through a web interface, the<br>
&gt;&gt; &gt; notebook<br>
&gt;&gt; &gt; method is perfectly fine, except in our application, the current running<br>
&gt;&gt; &gt; program is always in context, so you can think of it as only ever<br>
&gt;&gt; &gt; needing<br>
&gt;&gt; &gt; one notebook.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; I started diving into the notebook app itself, it appears much of the<br>
&gt;&gt; &gt; javascript is also looking for things (for instance I tried to override<br>
&gt;&gt; &gt; the<br>
&gt;&gt; &gt; handlers for the paths so the same thing is always served).  I can<br>
&gt;&gt; &gt; continue<br>
&gt;&gt; &gt; on my path, but I would imagine there maybe a more stripped down example<br>
&gt;&gt; &gt; floating around some where.<br>
&gt;&gt;<br>
&gt;&gt; Unfortunately we don&#39;t have any other examples.  On one hand, the<br>
&gt;&gt; notebook app is a fairly simple example itself.  It shows the basics<br>
&gt;&gt; of how you would communicate with kernels and display output, etc.  On<br>
&gt;&gt; the other hand, notebook web application is extremely complex.  There<br>
&gt;&gt; are multiple channels of communication (WebSockets, Ajax), everything<br>
&gt;&gt; is async and you have to wade through our JSON based message protocol.<br>
&gt;&gt;  Not sure if this helps, but I think your approach of diving into the<br>
&gt;&gt; notebook code base is a good one.<br>
&gt;&gt;<br>
&gt;&gt; Cheers,<br>
&gt;&gt;<br>
&gt;&gt; Brian<br>
&gt;&gt;<br>
&gt;&gt; &gt; Thanks.<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; ---------------------------------<br>
&gt;&gt; &gt; Anthony Oliver<br>
&gt;&gt; &gt; Chief Technology Officer<br>
&gt;&gt; &gt; <a href="http://www.ingenuitas.com" target="_blank">http://www.ingenuitas.com</a><br>
&gt;&gt; &gt; <a href="tel:%28906%29%20289-8169" value="+19062898169">(906) 289-8169</a><br>
&gt;&gt; &gt; <a href="mailto:anthony@ingenuitas.com">anthony@ingenuitas.com</a><br>
&gt;&gt; &gt; ---------------------------------<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt;<br>
&gt;&gt; &gt; _______________________________________________<br>
&gt;&gt; &gt; IPython-User mailing list<br>
&gt;&gt; &gt; <a href="mailto:IPython-User@scipy.org">IPython-User@scipy.org</a><br>
&gt;&gt; &gt; <a href="http://mail.scipy.org/mailman/listinfo/ipython-user" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-user</a><br>
&gt;&gt; &gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt;<br>
&gt;&gt; --<br>
&gt;&gt; Brian E. Granger<br>
&gt;&gt; Cal Poly State University, San Luis Obispo<br>
&gt;&gt; <a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
&gt;<br>
&gt;<br>
<br>
<br>
<br>
--<br>
Brian E. Granger<br>
Cal Poly State University, San Luis Obispo<br>
<a href="mailto:bgranger@calpoly.edu">bgranger@calpoly.edu</a> and <a href="mailto:ellisonbg@gmail.com">ellisonbg@gmail.com</a><br>
</div></div></blockquote></div><br></div>