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.
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. –
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
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