Sono in esecuzione un'applicazione Django con gunicorn su Heroku. Che cosa significa questo errore nel mio Heroku file di log medio?
Domanda
Sto cercando di usare gunicorn con il mio Django app su Heroku. Ho seguito le istruzioni qui: http://devcenter.heroku.com/articles/django#using_a_different_wsgi_server. Sembra che gunicorn runing, perché i registri indicano esso. Tuttavia, non mi piace vedere i messaggi di errore che non capisco nel mio file di log, e mentre la revisione dei registri ho visto la riga che legge "Errore R12 (Exit timeout) -> Processo non è riuscito a uscire entro 10 secondi di SIGTERM "e poi 'processo di fermarsi con SIGKILL'. La mia app sembra essere in esecuzione bene alla URL previsto, quindi questo non è un'emergenza, ma io sono solo curioso di sapere cosa sta succedendo. Grazie.
2012-01-10T20:56:36+00:00 heroku[web.1]: State changed from up to bouncing
2012-01-10T20:56:36+00:00 heroku[web.1]: State changed from bouncing to created
2012-01-10T20:56:36+00:00 heroku[web.1]: State changed from created to starting
2012-01-10T20:56:39+00:00 heroku[web.1]: Stopping process with SIGTERM
2012-01-10T20:56:39+00:00 heroku[web.1]: Starting process with command `python blossom/manage.py run_gunicorn -b "0.0.0.0:27470" -w 3`
2012-01-10T20:56:40+00:00 app[web.1]: Validating models...
2012-01-10T20:56:40+00:00 app[web.1]: Django version 1.3.1, using settings 'blossom.settings'
2012-01-10T20:56:40+00:00 app[web.1]:
2012-01-10T20:56:40+00:00 app[web.1]: Server is running
2012-01-10T20:56:40+00:00 app[web.1]: 0 errors found
2012-01-10T20:56:40+00:00 app[web.1]: Quit the server with CONTROL-C.
2012-01-10T20:56:40+00:00 app[web.1]: 2012-01-10 15:56:40 [3] [INFO] Starting gunicorn 0.13.4
2012-01-10T20:56:40+00:00 app[web.1]: 2012-01-10 15:56:40 [3] [INFO] Listening at: http://0.0.0.0:27470 (3)
2012-01-10T20:56:40+00:00 app[web.1]: 2012-01-10 15:56:40 [3] [INFO] Using worker: sync
2012-01-10T20:56:40+00:00 app[web.1]: 2012-01-10 15:56:40 [6] [INFO] Booting worker with pid: 6
2012-01-10T20:56:40+00:00 app[web.1]: 2012-01-10 15:56:40 [7] [INFO] Booting worker with pid: 7
2012-01-10T20:56:40+00:00 app[web.1]: 2012-01-10 15:56:40 [8] [INFO] Booting worker with pid: 8
2012-01-10T20:56:41+00:00 heroku[web.1]: State changed from starting to up
2012-01-10T20:56:48+00:00 heroku[web.1]: Error R12 (Exit timeout) -> Process failed to exit within 10 seconds of SIGTERM
2012-01-10T20:56:48+00:00 heroku[web.1]: Stopping process with SIGKILL
2012-01-10T20:56:50+00:00 heroku[web.1]: Process exited
Soluzione
In pratica quello che dice sulla latta. Nel Heroku impilare un processo è sempre terminato con un SIGTERM, che racconta il processo di chiudere con grazia, e lo dà secondi dieci di farlo.
Se questo non è terminato entro 10 secondi poi si ottiene un errore di R12 e un SIGKILL, che è essenzialmente un kill.
Ora, perché questo sta accadendo qui non è del tutto chiaro come i registri non vanno abbastanza indietro, ma si può vedere il SIGTERM accadendo a 20:56:39
Altri suggerimenti
Non c'è abbastanza log per mostrare il vostro problema con la certezza (errore R12 può significare un certo numero di cose). E per la cronaca, non sto correndo Gunicorn. Detto questo, ho avuto un problema simile a questo.
scopre che di cedro-stack non lo fa come si citano le app nella sezione INSTALLED_APPS di settings.py se non c'è un modulo per tale applicazione in qualsiasi altra parte del progetto.
Io di solito codificare la mia app in INSTALLED_APPS prima ancora di iniziare a codice in views.py, e il server DJANGO locale non si lamenta, così mi sono abituato a farlo. Purtroppo, si rompe che di cedro-stack.
Quando ho commentato le app che non ha avuto un modulo in qualsiasi altra parte del progetto e spinto la nuova versione up, ha cominciato a lavorare di nuovo immediatamente.