[Django] Subprocess / Neuen Prozess
Verfasst: Donnerstag 14. Juli 2011, 07:26
Guten Morgen Forum,
ich würde gerne in einer Webanwendung ein externes Programm starten, dessen Abarbeitungszeit allerdings dauern könnte.
Nun war natürlich meine erster Gedanke: nimmste subprocess... allerdings bleibt dann natürlich die Antwort auf den Request aus, wenn man auf den Rückgabewert wartet bzw. stdout liest.
Ich würde aber schon gerne den gestarteten Prozess "unter Kontrolle" behalten, also schon gerne subprocess verwenden.
Mein Gedanke war: einfach mit subprocess ein weiteres script aufrufen, nicht auf dessen Rückgabe zu warten, und dieses script soll dann mit subprocess ein externes Programm aufrufen und ggf. eine Schnittstelle zur Verfügung stellen um Informationen über den Status des externe Programms zu liefern.
Die Frage ist nur: was passiert mit dem Prozess in der Webapplikation wenn Request durch ist, der subprozess natürlich noch läuft, und der Prozess der den Request behandelt hat eigentlich terminieren sollte?
Bin ich hier auf dem Holzweg? Ich müsste einen Prozess aufrufen (oder spawnen) der unabhängig von dem ganzen Aufruf ist.
Unter PHP müsste man dafür (AFAIK) irgend einen Wert in der php.ini setzen. Schiebt hier der Webserver auch einen Riegel vor oder ist die Überlegung sinnvoll?
Gruß
Sparrow
Edit: Also nur damit wir uns verstehen: im Development-Server von Django scheint das grundsätzlich zu funktionieren.
Wenn ich ein Python-Script schreibe das jede Sekunde piept dann piept das auch wirklich so lange bis ich den Development-Server beende, nachdem ich es in einem View per subprocess gestartet habe. Bis dahin kann aber brav weiter auf der Seite gesurft werden und alles ist gut.
Ich frage mich halt nur was passiert wenn zB ein Apache-Prozess einen Subprocess startet. Da habe ich noch keine Erfahrung mit.
ich würde gerne in einer Webanwendung ein externes Programm starten, dessen Abarbeitungszeit allerdings dauern könnte.
Nun war natürlich meine erster Gedanke: nimmste subprocess... allerdings bleibt dann natürlich die Antwort auf den Request aus, wenn man auf den Rückgabewert wartet bzw. stdout liest.
Ich würde aber schon gerne den gestarteten Prozess "unter Kontrolle" behalten, also schon gerne subprocess verwenden.
Mein Gedanke war: einfach mit subprocess ein weiteres script aufrufen, nicht auf dessen Rückgabe zu warten, und dieses script soll dann mit subprocess ein externes Programm aufrufen und ggf. eine Schnittstelle zur Verfügung stellen um Informationen über den Status des externe Programms zu liefern.
Die Frage ist nur: was passiert mit dem Prozess in der Webapplikation wenn Request durch ist, der subprozess natürlich noch läuft, und der Prozess der den Request behandelt hat eigentlich terminieren sollte?
Bin ich hier auf dem Holzweg? Ich müsste einen Prozess aufrufen (oder spawnen) der unabhängig von dem ganzen Aufruf ist.
Unter PHP müsste man dafür (AFAIK) irgend einen Wert in der php.ini setzen. Schiebt hier der Webserver auch einen Riegel vor oder ist die Überlegung sinnvoll?
Gruß
Sparrow
Edit: Also nur damit wir uns verstehen: im Development-Server von Django scheint das grundsätzlich zu funktionieren.
Wenn ich ein Python-Script schreibe das jede Sekunde piept dann piept das auch wirklich so lange bis ich den Development-Server beende, nachdem ich es in einem View per subprocess gestartet habe. Bis dahin kann aber brav weiter auf der Seite gesurft werden und alles ist gut.
Ich frage mich halt nur was passiert wenn zB ein Apache-Prozess einen Subprocess startet. Da habe ich noch keine Erfahrung mit.