2012-11-11 15 views
13

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.

+1

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

+0

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

+0

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

risposta

9

Per la cronaca, questo sembra essere stato risolto eseguendo la mia app utilizzando Tornado al posto del server di sviluppo Flask. Avvolgere il mio codice Flask in un server Tornado è stato semplicissimo quando ho deciso di farlo: consulta lo http://flask.pocoo.org/docs/deploying/wsgi-standalone/#tornado se ti trovi nella mia stessa situazione.

+2

Grazie mille per aver postato questo! Il tornado sembra risolvere il problema per me. Si prega di collegare anche a http://stackoverflow.com/questions/11150343/slow-requests-on-local-flask-server. – gatoatigrado

+0

L'app My Flask non è ancora stata distribuita, ma è stata appesa per motivi sconosciuti. Bene, non ho riavviato il mio computer da ieri. In ogni caso problema risolto, grazie. –

+0

Ho avuto lo stesso problema e sembrava averlo risolto anche per me. Grazie –

Problemi correlati