Attualmente sto sviluppando un'applicazione basata su flask
. Funziona correttamente generando il server manualmente usando app.run()
. Ho provato a eseguirlo attraverso mod_wsgi
ora. Stranamente, ricevo un errore di 500 e nulla nei log. Ho studiato un po 'e qui ci sono le mie conclusioni.500 Errore nei registri apache senza dati
- L'inserimento di una riga come
print >>sys.stderr, "hello"
funziona come previsto. Il messaggio appare nel log degli errori. - Quando si chiama un metodo senza utilizzare un modello, funziona perfettamente. Errore 500.
- L'utilizzo di un modello semplice funziona anche bene.
- MA non appena si attiva un database accesso all'interno del modello (ad esempio il ciclo su una query) Ho ricevuto l'errore.
Il mio istinto mi dice che è SQLAlchemy che emette un errore, e forse qualche configurazione di logging fa sì che il log venga scartato ad un certo punto nell'applicazione.
Inoltre, per il test, sto usando SQLite. Questo, per quanto posso ricordare, è accessibile solo da un thread. Quindi se mod_wsgi
genera più thread, si può rompere l'app.
Sono un po 'in perdita, perché si interrompe solo in esecuzione dietro mod_wsgi
, che sembra anche ingoiare i miei errori. Che cosa posso fare per far comparire gli errori nell'errore_log di apache?
Per riferimento, il codice può essere visto on this github permalink.
http://flask.pocoo.org/docs/errorhandling/ spiega anche questo.Se la modalità di debug è abilitata, gli errori verranno inviati al log di apache. Una volta disabilitato, è necessario configurare la registrazione o non andranno da nessuna parte. Posso confermare che 'logging.handlers.SMTPHandler' funziona bene per le applicazioni distribuite. –
@ robots.jpg: mi è sfuggito che ... A volte è ovviamente meglio leggere i documenti più volte ...;) – exhuma
Credo equamente tranne che non è globale: 'app.logger.addHandler (logging.StreamHandler (stream = sys.stderr)) ' – jpmc26