Ich versuche, eine einfache WSGI-kompatiblen Anwendung zu schreiben, die auf einen HTTP-POST reagiert, sendet einige Daten an den Server, schließt die Verbindung und weiterhin für ein paar mehr ausführen Sekunden.Python WSGI mit langen laufenden Prozess
Es ist ein längerer, aber nicht langer Prozess. Ich muss antworten und die Verbindung innerhalb von 3 Sekunden (Slack) schließen, aber mein Programm kann 5 oder so Sekunden dauern, um tatsächlich zu laufen. Ich kann es mir leisten, mit genügend WSGI-Prozessen zu laufen, um die Last selbst bei 5 Sekunden zu bewältigen.
Hier ist ein Beispiel:
import time
def application(environ, start_response):
start_response('200 OK', [('Content-type', 'text/plain')])
yield "foo\n".encode()
# we're done responding to the server, close the connection
time.sleep(5)
with open('/tmp/foo', 'w') as stream:
stream.write('output stuff\n')
In diesem Beispiel spült die Ausbeute korrekt Dinge, aber ich würde die Ausführung fortfahren. Ich könnte eine Gabel machen und dann() in der Eltern, zurückgeben, als wäre ich dies ein CGI-Skript, aber ich bin nicht glücklich über alle , dass nicht geschlossenen WSGI-Zustand.
Ich benutze Python 3.5 und mod_wsgi zum Testen, aber ich möchte, dass dies generisch/konform ist.
Das es nicht wirklich lösen, wie Sie wollen, aber wissen Sie, dass Sie mit einer leeren Antwort reagieren können und später eine Anfrage an die "response_url", die sie dir geben? – L3viathan
@ L3viathan das ist genau das, was ich mache –