<br><br><div class="gmail_quote">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>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><div><br></div><div>-MinRK</div></div>