cgi and popen

  • Thread starter Maarten van Veen
  • Start date
M

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
 
T

Thomas Guettler

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 </dev/null &

HTH,
Thomas
 
M

Maarten van Veen

Thomas Guettler said:
Am Wed, 07 Jun 2006 14:54:41 +0200 schrieb Maarten van Veen:


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 </dev/null &

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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,772
Messages
2,569,593
Members
45,111
Latest member
VetaMcRae
Top