Newbie question communicating between 2 progs

Don Garrett garrett at bgb.cc
Mon Jun 10 20:51:43 CEST 2002


Ben Thursfield wrote:
> 
> Peter Hansen schrieb:
> 
> 
>>The question is ambiguous.  When you say "frames", the only thing
>>that comes to mind is that you are running Python on client-side
>>Internet Explorer under Windows, as scripts in two different parts
>>of a window (the frames) simultaneously.  I think you must have
>>meant something different however.
>>
>>Could you please describe more about your environment?  The
>>term "frame" can mean a number of things.
> 
> 
> That's right. I am running 2 cgi-scripts in two different frames of the
> browser, the one should only print an array into the frame and the other one
> communicates with a server. I decided to split the programm up because i want
> to refresh the printing frame every second. The main frame changes the array
> the second frame prints it out. My host has Python installed, so the
> #usr/bin/python method works fine.
> So the question is how can the programm responsible for printing out the array
> access the array defined in the other programm.

   This is a suprisingly hard problem.

   The two programs are only running while the frame they handle is being 
generated. They shutdown and start up on each refresh request. I'm assuming 
you aren't using some form of server push, which has it's own problems. They 
don't save any state at all between refreshes of the same page. This means you 
have to solve the problem of having a program communicate it's state to 
itself! The good news is that when the program can communicate to itself, you 
can use the same mechanism to communicate with the other frame.

   However, the best answer to your question is to use cookies. The contents 
should be visible to all pages on the local site (you can control this) so 
they will allow you scripts to communicate with themselves and each other. You 
can store a fair amount in one (I'm not sure what the size limit is), and it 
can be binary.

   A few warnings.

   Some people disable cookies. This can totally break your site.

   All cookies are always uploaded as part of every page request everywhere 
they are visible. This means that you shouldn't make them too large or you 
will slow your site. If they are big, try to restrict cookie visibility to 
just the pages that really need them. You can specify where the cookies are 
visible when you create them. You can even store the state info in a database 
and use the cookie as a key to retreive it.

   When it comes to security, you cannot trust the contents of the cookie. The 
contents need to be validated the same way the values from a form would be. A 
tricky black hat can force the cookie contents to be anything they want.

   Two last bits of advice from an old web developer (well as old as a web 
developer can be).

   Try to avoid frames. They cause a lot of problems for both you and for your 
users. For example, they often break cross-browser, they can break bookmarks, 
and they can break printing.

   Try to avoid refreshes, especially frequent ones. Someone with a poor link 
will spend more time looking at an empty page that hasn't loaded than they 
will looking at your content.

> I hope i described the problem better now.
> 
> Ben
> 

-- 
Don Garrett                             http://www.bgb.cc/garrett/
BGB Consulting                                      garrett at bgb.cc




More information about the Python-list mailing list