Frage

Ich möchte eine Google App Engine App machen, die die folgenden:

  1. Client sendet eine asynchrone HTTP-Anforderung
  2. Server startet die Verarbeitung dieser Anforderung
  3. Client macht Ajax-HTTP-Anfragen Fortschritt erhalten

Das Problem ist, dass die Server-Verarbeitung (Schritt # 2) kann mehr als 30 Sekunden dauern.

Ich weiß, dass Sie keine Threads auf Google Application Engine haben können und dass alle Aufgaben innerhalb von 30 Sekunden durchführen müssen oder sie heruntergefahren bekommen. Gibt es irgendeine Art und Weise zu arbeiten, um dies?

Auch ich bin mit Python-django als Backend.

War es hilfreich?

Lösung

Sie werden die Task Queue API verwenden möchten, wahrscheinlich über latenten Aufgaben . Die deferred API macht die Arbeit mit Aufgabenwarteschlangen dramatisch einfacher arbeiten.

Im Wesentlichen werden Sie wollen eine neue Aufgabe zum Laichen der Verarbeitung zu starten. Diese Aufgabe sollte DeadlineExceeded Ausnahmen abfangen und neu planen selbst (wieder über die deferred API) die Verarbeitung fortzusetzen. Dies erfordert, dass Sie Ihre Aufgaben der Lage sein, den Überblick über ihre eigenen Fortschritte zu halten. Sie können auch ihre eigenen Status in memcache aktualisieren, die Sie, dass die Kontrollen ist die Aufgabe des Status eine Ansicht schreiben können. Diese Ansicht kann dann über Ajax abgefragt werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top