2012-11-11 11 views
13

Ich habe an einer Flask-App gearbeitet, die SMS-Nachrichten mit Twilio verarbeitet, speichert sie in einer Datenbank und bietet Zugriff auf ein Frontend über JSONP GET-Anfragen. Ich habe es mit supervisord dämonisiert, das scheint ziemlich gut zu funktionieren, aber alle paar Tage beginnt es zu hängen (d. H. Alle Anfragen hängen für immer oder aus) und ich muss den Prozess neu starten. (Ich habe auch versucht, es einfach mit nohup auszuführen, aber das gleiche Problem.) Ich war verdächtig, dass sqlite3 gelegentlich blockierte, aber mein letzter Test bestand darin, eine Anfrage-Methode zu schreiben, die keinen Datenbankzugriff erforderte, und das ist Zeitüberschreitung auch. Ich bin unglaublich verwirrt - hoffentlich hast du etwas Ähnliches gesehen oder weißt, was das verursachen könnte.Flask App gelegentlich hängen

Der entsprechende Code kann here gefunden werden, und es ist zur Zeit läuft (und zum Stillstand gekommen, als von diesem Post) auf meinem VPS bei mattnichols.net:6288

Dank!

Update: Denkst du, das könnte ein Problem mit Flasks Dev-Server sein? Ich würde gerne glauben, dass das Umpacken meiner App mit Tornado (oder etwas Ähnlichem) das Problem lösen könnte, aber ich habe auch andere Dinge für längere Zeit ohne Probleme mit dem Dev-Server ausgeführt.

+1

Möglicherweise haben Sie keine offenen Dateizugriffsnummern mehr, insbesondere wenn dieser Code viele Anfragen enthält. Typisches ulimit ist 4096. Versuchen Sie, das zu erhöhen oder - noch besser - von sqlite wegzugehen und eine db-Datei zu verwenden. Sie benötigen keinen relationalen Overhead zum Speichern von SMS-Nachrichten. –

+0

Vielen Dank für Ihre Vorschläge - ich bekomme derzeit fast keine Anfragen, und ich bin mir ziemlich sicher, dass dieses Problem nicht DB-bezogen ist. Ihr Punkt über die Nicht-Notwendigkeit von relationalem Overhead ist jedoch genau richtig. Ich werde definitiv darüber nachdenken, zu einer dokumentenbasierten Datenbank zu wechseln. – man1

+0

Ich fand, dass für mich der Flask-Dev-Server auf bestimmten Computern manchmal unglaublich lückig war (ich denke, es lag an einem Problem mit IPv6, obwohl ich mich nicht mehr erinnere). Ich hatte mehr Glück beim Laufen meiner Flask App auf einem CherryPy Server (Link: http://flask.pocoo.org/snippets/24/) – Michael0x2a

Antwort

9

Für den Rekord scheint dies durch Ausführen meiner App mit Tornado anstelle des Flask-Dev-Servers gelöst worden zu sein. Mein Flask-Code in einen Tornado-Server zu wickeln, war super einfach, wenn ich mich dazu entschloss: konsultiere http://flask.pocoo.org/docs/deploying/wsgi-standalone/#tornado, wenn du dich in meiner Situation befindest.

+2

Vielen Dank für das Posten! Tornado scheint das Problem für mich zu lösen. Bitte verlinken Sie auch zu http://stackoverflow.com/questions/11150343/slow-requests-on-local-flask-server. – gatoatigrado

+0

Meine Flask-App ist noch nicht einmal im Einsatz, aber sie hing aus unbekannten Gründen. Nun, ich habe meinen Computer seit gestern nicht neu gestartet. Auf jeden Fall Problem gelöst, danke. –

+0

Ich hatte das gleiche Problem und schien es auch für mich zu beheben. Vielen Dank –