cgi and popen

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Maarten van Veen

    #1

    cgi and popen

    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
  • Thomas Guettler

    #2
    Re: cgi and popen

    Am Wed, 07 Jun 2006 14:54:41 +0200 schrieb Maarten van Veen:
    [color=blue]
    > 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.[/color]

    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

    --
    Thomas Güttler, http://www.thomas-guettler.de/
    E-Mail: guettli (*) thomas-guettler + de
    Spam Catcher: niemand.leerman n@thomas-guettler.de

    Comment

    • Maarten van Veen

      #3
      Re: cgi and popen

      In article <pan.2006.06.07 .14.53.44.72944 1@thomas-guettler.de>,
      Thomas Guettler <niemand.leerma nn@thomas-guettler.de> wrote:
      [color=blue]
      > Am Wed, 07 Jun 2006 14:54:41 +0200 schrieb Maarten van Veen:
      >[color=green]
      > > 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.[/color]
      >
      > 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[/color]

      Thx for your reply Thomas. I use subprocess.Pope n, 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

      Comment

      Working...