2016-10-08 2 views
1

Ich habe ein Problem mit einer AngularJs App. Meine Anwendung muss eine GET-Abfrage an einen Python-Flaschen-Server senden, der ein Skript für 3-4 Minuten verarbeitet.

Ich benutze tatsächlich die $ http.get Methode in eckig, aber nach einer Minute bekomme ich ein Timeout, wenn meine Python-App noch nicht geantwortet hat. Die Python-Anwendung setzt die Verarbeitung fort, aber aufgrund der Zeitüberschreitung kann ich die Antwort in meiner Versprechungsfunktion nicht lesen.

Gibt es eine Möglichkeit, mit dieser Art von Abfragen umzugehen, die sowohl Timeouts von Browsern als auch eckige App vermeidet?

+1

Senden Sie Fortschrittskopfzeilen oder etwas Ähnliches, damit Ihre App weiß, dass Ihr Server noch vorhanden ist. – Nit

+0

Wie kann ich es tun? Wie etwas mit meinem Python, während meine Verarbeitung läuft? – JonathanG

+0

Je nachdem, welches Werkzeug Sie verwenden (Sie haben es in Ihrer Frage nicht angegeben), sind die gesuchten Schlüsselwörter wahrscheinlich _stream progress_ oder _yield progress_, siehe https://developer.mozilla.org/en-US/ docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest # Monitoring_progress – Nit

Antwort

0

Sie können benutzerdefinierte Timeout für HTTP-Anforderung im zweiten Parameter von http.get() Verfahren eingestellt:

$http.get('request-path', {timeout: 300000}); 

Dieses Timeout auf 300 Sekunden = 5 Minuten eingestellt werden.

+1

Während das Setzen eines langen Timeouts funktioniert, hat es das Schreckliche Nachteil: Wenn etwas tatsächlich schief läuft und der Server offline geht oder aus anderen Gründen nicht verfügbar ist, muss der Benutzer fünf Minuten warten, um es herauszufinden. – Nit

Verwandte Themen