2016-01-10 10 views
5

Ho un app pallone-socketio ospitato su Heroku con il seguente Procfile:Heroku Server Richiesta calzino = backend interrotta per un'applicazione Flask SocketIO

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

Da quando sono passato a socketio, l'applicazione si è comportato inconsistenly . In precedenza l'app funzionava per un po 'e poi le richieste POST avrebbero iniziato a scadere.

Da ieri notte, continuo a ricevere l'errore

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 

ho letto la descrizione codice di errore Heroku che dice "La presa backend, appartenente al processo web del app è stata chiusa prima che il back-end ha restituito una risposta HTTP. "

Ma non ho idea del perché questo sarebbe successo.

Qualsiasi indizio su cosa dovrei cercare, mi aiuterà a eseguire il debug di questo.

Potrei condividere il codice ma le sue 300 righe e poiché non so da dove proviene l'errore, non sono sicuro che sarebbe utile.

+0

hai lo stesso problema (o altri) quando esegui l'app in locale? (con gunicorn) – wgwz

+0

No funziona a livello locale con gunicorn. –

+0

Si potrebbe provare a cambiare il tag * procfile * worker class come: '--worker-class socketio.sgunicorn.GeventSocketIOWorker'. Sto seguendo questo [qui] (http://www.alexhadik.com/blog/2015/1/29/using-socketio-with-python-and-flask-on-heroku). – wgwz

risposta

0

Questo tipo di "errore del flusso di socket" viene generato da Flask quando si annulla o si rinvia la stessa richiesta mentre sul lato server (flask) si è ancora sotto calcolo per rendere il layout corrispondente alla richiesta iniziale.

Quindi può essere relativo al timeout o alla gestione degli errori di rete su entrambi i lati (server/client).

Qualche domanda:

quanto tempo la richiesta di calcolo è in sul lato server? Come gestite l'eccezione di errore di rete sul lato server e client? Esiste un timeout sul lato del pallone o lato client?

E 'anche possibile che una nuova richiesta viene inviata prima che il precedente è finita ..

Si prega di condividere un po' di codice relativo alla richiesta di trasformazione.

Problemi correlati