Ho lavorato a un'app Flask che gestisce i messaggi SMS utilizzando Twilio, li memorizza in un database e fornisce l'accesso a un frontend tramite richieste JSONP GET. L'ho demonizzato usando supervisord, che sembra funzionare abbastanza bene, ma ogni pochi giorni inizia a bloccarsi (ad esempio, tutte le richieste pendono per sempre o scadono) e devo riavviare il processo. (Ho anche provato semplicemente a farlo funzionare con nohup, ma lo stesso problema.) Ero sospettoso che sqlite3 fosse in qualche modo bloccato occasionalmente, ma il mio test più recente era quello di scrivere un metodo di richiesta che non implicasse l'accesso al database, e questo è il timeout pure. Sono incredibilmente perplesso - spero che tu abbia visto qualcosa di simile o sappia cosa potrebbe causare questo.Flask App occasionalmente sospesa
Il codice in questione può essere trovato here, ed è attualmente in esecuzione (e in fase di stallo, come di questo post) sul mio VPS a mattnichols.net:6288
Grazie!
Aggiornamento: pensi che questo potrebbe essere un problema con il server di sviluppo di Flask? Mi piacerebbe credere che il wrapping della mia app con Tornado (o qualcosa di simile) possa risolvere il problema, ma ho anche eseguito altre cose per molto più tempo senza problemi usando il server di sviluppo.
Si potrebbe essere a corto di handle di file aperti, soprattutto se questo codice sta ricevendo un sacco di richieste. L'ulimit tipico è 4096. Prova ad aumentarlo o, ancora meglio, ad allontanarti da sqlite e usare un documento db. Non è necessario l'overhead relazionale per la memorizzazione dei messaggi SMS. –
Grazie per i vostri suggerimenti - In questo momento non ricevo quasi nessuna richiesta, e sono abbastanza sicuro che questo problema non sia correlato al DB. Il tuo punto sulla non necessità del sovraccarico relazionale è azzeccato, ma cercherò sicuramente di passare a un DB basato su documenti. – man1
Ho trovato che per me, il server dev Flask a volte sarebbe incredibilmente lento su alcuni computer (penso che sia stato a causa di qualche problema che coinvolge IPv6, anche se non ricordo più). Ho avuto la fortuna di eseguire la mia app Flask su un server CherryPy (link: http://flask.pocoo.org/snippets/24/) – Michael0x2a