django, fastcgi: wie man einen lang andauernden Prozess verwaltet

Ich habe eine django + fastcgi-Anwendung geerbt, die geändert werden muss, um eine lange Berechnung durchzuführen (bis zu einer halben Stunde oder mehr). Ich möchte die Berechnung im Hintergrund ausführen und eine Antwort vom Typ "Ihr Auftrag wurde gestartet" zurückgeben. Während der Prozess ausgeführt wird, sollten weitere Zugriffe auf die URL "Ihr Job wird noch ausgeführt" zurückgeben, bis der Job beendet ist. Zu diesem Zeitpunkt sollten die Ergebnisse des Jobs zurückgegeben werden. Jeder nachfolgende Klick auf die URL sollte das zwischengespeicherte Ergebnis zurückgeben.

Ich bin ein absoluter Neuling bei Django und habe seit einem Jahrzehnt keine nennenswerten Webarbeiten mehr ausgeführt. Daher weiß ich nicht, ob es eine integrierte Möglichkeit gibt, das zu tun, was ich will. Ich habe versucht, den Prozess über subprocess.Popen () zu starten, und das funktioniert einwandfrei, abgesehen von der Tatsache, dass ein ungültiger Eintrag in der Prozesstabelle verbleibt. Ich benötige eine saubere Lösung, mit der temporäre Dateien und alle Spuren des Prozesses entfernt werden können, sobald dieser abgeschlossen ist.

Ich habe auch mit fork () und threads experimentiert und habe noch keine brauchbare Lösung gefunden. Gibt es eine kanonische Lösung für einen meiner Meinung nach recht häufigen Anwendungsfall? FWIW wird nur auf einem internen Server mit sehr geringem Datenverkehr verwendet.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage