<br><br><div class="gmail_quote">On Mon, Feb 4, 2013 at 9:44 PM, Wojciech Daniło <span dir="ltr">&lt;<a href="mailto:wojtek.danilo.ml@gmail.com" target="_blank">wojtek.danilo.ml@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">

Benjamin thank you very much for yours answer! I&#39;m very happy that all the things are implemented - I&#39;m starting to test these things out :)<div><br></div><div>If I could I owuld ask you additional 2, a little more precious questions:</div>


<div>1) Lets concider we have kernel K and clients A and B. If client A executes something on K, I would like K to send notification about it to B (broadcast to clients) - I think youre talking about something like that (or am I wrong?).</div>

</blockquote><div><br></div><div>Yes, this is the `pyin` message. It is sent to all clients on the iopub channel when an execute_request begins (prior to evaluating that request).</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>2) Additional when A or B executes a command on K it will run some functions from my batch python module. Is it possible that these functions will broadcast some customized messages to client with the functionality provided by Kernel?</div>

</blockquote><div><br></div><div>Yes, if you modify the kernel.  You might be able to get away with just registering a `post_execute_hook` in IPython.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>So basically is it possible to send to Kernel and from Kernel to clients customized messages with custom fields etc (extend the handling mechanizm) or should I implement this next to the IPython communication mechanism (I do not want to implement that next to it, because that is a little bit ugly ;) )</div>

</blockquote><div><br></div><div>I would recommend trying to use the existing functionality as best you can.  In general, you would use:</div><div><br></div><div>publisher = get_ipython().display_pub</div><div><br></div>
<div>
and</div><div><br></div><div>publisher.publish(&quot;myapp&quot;, display_data)</div><div><br></div><div>That should let you publish fairly arbitrary data to the clients.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div><br></div><div>Thank you once again!<br><br><div class="gmail_quote">2013/2/5 MinRK <span dir="ltr">&lt;<a href="mailto:benjaminrk@gmail.com" target="_blank">benjaminrk@gmail.com</a>&gt;</span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<div><div class="h5">
<br><br><div class="gmail_quote"><div><div>On Mon, Feb 4, 2013 at 9:08 PM, Wojciech Daniło <span dir="ltr">&lt;<a href="mailto:wojtek.danilo.ml@gmail.com" target="_blank">wojtek.danilo.ml@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">

Hi!<div>I&#39;m new to IPython, but this project seems like a very good &quot;boilerplate&quot; for my custom project. I&#39;ve read a lot of docs and looked at the source code and I want to ask you if something I want to do with IPython is possible.</div>





<div><br></div><div>I want to run a IPython Kernel on a machine. It will execute my batch program. I want users to be able to connect to this kernel (locally or over network) and execute Python code - everything so far is provided by IPython i think.</div>





<div>The problem is, I want to know WHICH user executed the code, because I want to make something like collaboration model - If one user executes a code - lets say &quot;draw line&quot;, I want this line t show in the second user GUI with a tooltip, which user executed it.</div>





<div><br></div><div>Is it somehow possible? Could you give me any hints how to do it?</div></blockquote><div><br></div></div></div><div>Messages have a &#39;session&#39; key, which is unique, and a username in the header (generally the unix username).  These are attributes of the Session object, so at the very least every frontend (aka client aka user session) has a unique ID.  The header of each request is attached as the &#39;parent_header&#39; of replies and side effects of the request.  Among these side effects (of execute_requests) are:</div>




<div><br></div><div>pyin: the Python code just run</div><div>display_data: display side effects</div><div>stream: stdout/stderr</div><div><br></div><div>And these come to all frontends on the iopub channel.</div><div><br>




</div><div>So let&#39;s say you have two frontends attached to the Kernel.  When a &#39;pyin&#39; message comes in on the iopub channel, and you check it, you can trigger an event based on the content and parent_header, such as &quot;client [FOO] just ran this code: etc.&quot;.</div>




<div><br></div><div>If you want to draw the display *results* of the execution, they will be `display_data` messages on the same channel, and you can associate them with their source in the same way.</div><div><br></div>



<div>
That should be all you need, I think.</div><span><font color="#888888"><div><br></div><div>-MinRK</div></font></span></div>
<br></div></div>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org" target="_blank">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br></div>
<br>_______________________________________________<br>
IPython-dev mailing list<br>
<a href="mailto:IPython-dev@scipy.org">IPython-dev@scipy.org</a><br>
<a href="http://mail.scipy.org/mailman/listinfo/ipython-dev" target="_blank">http://mail.scipy.org/mailman/listinfo/ipython-dev</a><br>
<br></blockquote></div><br>