cgi and popen

2006-06-07 Thread Maarten van Veen
A long story made short, I've build a python/cgi website consisting of 
two pages. Page1 has a html form in which you can input a series of 
queries. Then via Popen it starts a pythons search script, which stores 
the results in a python shelve.
As the Popen command is given it should redirect to page2, which will 
check if the shelve is ready (search finished) and if not displays a 
search page, refreshing itself after 10 seconds.
The Popen command works nice when tried out in the console. The script 
isueing the Popen quits, and the other process keeps on running till 
finished.
But when embedded in page1.cgi, page 1 waits till the search is 
finished, resulting in a browser timeout when big queries are done. It 
was this problem in the first place why I split up the page in two and 
added Popen.
Does anybody know how to get the page not waiting on Popen to finish?

thnx
Maarten
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: cgi and popen

2006-06-07 Thread Maarten van Veen
In article <[EMAIL PROTECTED]>,
 Thomas Guettler <[EMAIL PROTECTED]> wrote:

> Am Wed, 07 Jun 2006 14:54:41 +0200 schrieb Maarten van Veen:
> 
> > A long story made short, I've build a python/cgi website consisting of 
> > two pages. Page1 has a html form in which you can input a series of 
> > queries. Then via Popen it starts a pythons search script, which stores 
> > the results in a python shelve.
> > As the Popen command is given it should redirect to page2, which will 
> > check if the shelve is ready (search finished) and if not displays a 
> > search page, refreshing itself after 10 seconds.
> > The Popen command works nice when tried out in the console. The script 
> > isueing the Popen quits, and the other process keeps on running till 
> > finished.
> 
> Hi,
> 
> You can find out where the process hangs, by
> sending SIGINT to the python script:
> 
> kill -SIGINT PID
> 
> This is like ctrl-c, you should get a traceback.
> 
> If the page1 script is not alive anymore, during
> the unwanted waiting, this does not work.
> 
> Which form of popen do you use? Popen4 is the best,
> because you cannot get a deadlock if there is output
> on stdout and stderr.
> 
> I guess you have the same strange thing, if you
> ssh to the server, start the script1 and you want
> to logoff before the subprocesses is finished.
> 
> You can try to start the script like this:
> 
> nohup nice mein-script >> $HOME/log/mein-script.log 2>&1  
>  HTH,
>   Thomas

Thx for your reply Thomas. I use subprocess.Popen, because popen 1t/m 4 
are deprecated. 
I found a dodgy way around my problem though. By inserting another page 
between the input and the results page,a user sees a "i'm searching" 
page which wants to redirect to the results page directly, but keeps 
waiting for the search process to finish.
So I put what used to be my problem to good use. :D

Maarten
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: creating and naming objects

2006-06-07 Thread Maarten van Veen
In article <[EMAIL PROTECTED]>,
 "Brian" <[EMAIL PROTECTED]> wrote:

> I have a question that some may consider silly, but it has me a bit
> stuck and I would appreciate some help in understanding what is going
> on.
> 
> For example, lets say that I have a class that creates a student
> object.
> 
> Class Student:
> def setName(self, name)
> self.name = name
> def setId(self, id)
> self.id = id
> 
> Then I instantiate that object in a method:
> 
> def createStudent():
> foo = Student()
> /add stuff
> 
> Now, suppose that I want to create another Student.  Do I need to name
> that Student something other than foo?  What happens to the original
> object?  If I do not supplant the original data of Student (maybe no id
> for this student) does it retain the data of the previous Student
> object that was not altered?  I guess I am asking how do I
> differentiate between objects when I do not know how many I need to
> create and do not want to hard code names like Student1, Student2 etc.
> 
> I hope that I am clear about what I am asking.
> 
> Thanks,
> Brian

Hi Brian,

If you would do it like this:
Class Student:
def setName(self, name)
self.name = name
def setId(self, id)
self.id = id


def createStudent():
foo = Student()
foo.setName("Brian")
foo = Student()
print foo.getName()

You would get an error here, because foo now equals the second Student 
object which has no name. And you can't get to the first one. 
Perhaps you could do something like this.

Class Student:
def setName(self, name)
self.name = name
def setId(self, id)
self.id = id

listWithStudents = []

def createStudent():
listWithStudent.append(Student())

Now every student you create is put in the list with students so you can 
access them but don't have to give them names.
You could do something to all of them like this:
for student in listWithStudent:
   student.doSomething()

Or change just one student:
listWithStudent[23].doSomething()  # this is the 24th student though!!!

Hope this is what you're looking for.
Maarten
-- 
http://mail.python.org/mailman/listinfo/python-list