2016-01-10 9 views
5

Ich habe eine Kolben-socketio App auf Heroku mit folgendem procfile gehostet:Heroku Socke = Backend-Server Antrag auf Anwendung Flask SocketIO Unterbrochen

web: gunicorn --worker-class eventlet hello:app 

Seit ich socketio geschaltet, die App zu verhalten hat inconsistenly . Früher lief die App eine Weile und dann begannen POST-Anfragen mit dem Zeitlimit.

Seit gestern Abend, ich erhalte den Fehler

sock=backend at=error code=H18 desc="Server Request Interrupted" method=GET path="/static/js/third-party/browser.js" host=deard.herokuapp.com request_id=725da6af-aa29-4293-a411-2c89977f1d4d fwd="216.165.95.0" dyno=web.1 connect=1ms service=36ms status=503 bytes=13811 

las ich die Code Beschreibung Heroku Fehler, der sagt: „Der Back-End-Buchse, die zu Ihrem App Web-Prozess geschlossen wurde, bevor das Backend eine HTTP-Antwort zurückgegeben. "

Aber ich habe keine Ahnung, warum das passieren würde.

Jeder Hinweis, auf was ich achten sollte, wird mir helfen, dies zu debuggen.

Ich könnte den Code teilen, aber seine 300 Zeilen lang und da ich nicht weiß, woher der Fehler stammt, bin ich mir nicht sicher, ob es hilfreich wäre.

+0

Haben Sie das gleiche Problem (oder andere), wenn Sie die App lokal ausführen? (mit Gunicorn) – wgwz

+0

Nein es läuft gut lokal mit Gunicorn. –

+0

Sie könnten versuchen, das * procfile * worker-Klassen-Tag wie folgt zu ändern: '--worker-class socketio.sgunicorn.GeventSocketIOWorker'. Ich folge diesem [hier] (http://www.alexhadik.com/blog/2015/1/29/using-socketio-with-python-and-flask-on-heroku). – wgwz

Antwort

0

Diese Art von "Socket-Stream-Fehler" wird von Flask ausgelöst, wenn Sie dieselbe Anfrage abbrechen oder erneut senden, während Sie auf der Serverseite (Kolben) noch Berechnungen durchführen, um das Layout entsprechend der ursprünglichen Anforderung zu rendern.

So kann es relativ zu Timeout oder Netzwerk Fehlerbehandlung auf beiden Seiten (Server/Client) sein.

Einige Frage:

Wie lange die Anfrage Berechnung während auf Server-Seite ist? Wie behandeln Sie Netzwerkfehler Ausnahme auf Server- und Clientseite? Gibt es ein Timeout auf Flaschen- oder Kundenseite?

Es ist auch möglich, dass eine neue Anforderung, bevor die eine vorherige vorbei gesendet wird ..

Bitte einen Code relativ teilen Verarbeitung anfordern.