2011-12-22 12 views
5

Sto seguendo il tutorial this per ottenere sedano e django in esecuzione su heroku.Heroku Django Celery: NameError: nome "DATABASES" non definito

Tuttavia, ottengo questo errore nei miei ceppi quando ho messo il codice specificato per il lavoratore:

2011-12-22T05:31:56+00:00 heroku[web.1]: Starting process with command `python canada/manage.py run_gunicorn -b "0.0.0.0:47336" -w 3` 
2011-12-22T05:31:56+00:00 app[web.1]: Unexpected error: (<type 'exceptions.NameError'>, NameError("name 'DATABASES' is not defined",), <traceback object at 0x11a9560>) 
2011-12-22T05:31:56+00:00 app[web.1]: Traceback (most recent call last): 
2011-12-22T05:31:56+00:00 app[web.1]: File "canada/manage.py", line 11, in <module> 
2011-12-22T05:31:56+00:00 app[web.1]:  import settings 
2011-12-22T05:31:56+00:00 app[web.1]: File "/app/canada/settings.py", line 51, in <module> 
2011-12-22T05:31:56+00:00 app[web.1]:  CELERY_RESULT_DBURI = DATABASES['default'] 
2011-12-22T05:31:56+00:00 app[web.1]: NameError: name 'DATABASES' is not defined 
2011-12-22T05:31:57+00:00 heroku[slugc]: Slug compilation finished 
2011-12-22T05:31:57+00:00 heroku[web.1]: State changed from starting to crashed 
2011-12-22T05:31:58+00:00 heroku[web.1]: Process exited 

mio settings.py sembra

import djcelery 

djcelery.setup_loader() 

BROKER_BACKEND = "djkombu.transport.DatabaseTransport" 
CELERY_RESULT_DBURI = DATABASES['default'] 
... 

Quando ho sincronizzato prima di aggiungere questo linea, CELERY_RESULT_DBURI = DATABASES['default'], funzionava bene. Secondo the document

When you deploy a Django application, the compile process appends the following code to your settings.py to use the DATABASE_URL environment variable:

risposta

8

Heroku sta aggiungendo la configurazione DATABASES alla fine del tuo settings.py, quindi quando fai riferimento a DATABASES nel tuo settings.py, non esiste.

È possibile replicare Heroku DATABASES impostazioni nel proprio archivio (solo letta da DATABASE_URL da env, vedi: django-heroku-template) o utilizzare il proprio buildpack.

+0

THANK Ill ti faccio sapere come va, sembra essere giusto –

+0

Questo è esattamente quello che volevo. Grazie! –

0

provare questo prima di eseguire la vostra applicazione:

export DATABASE_URL='postgres://postuser:[email protected]/dbname' 

Utilizzando le variabili di ambiente è il modo più semplice per Heroku per impostare automaticamente le credenziali di database, senza modificare settings.py

+1

Vuoi dire fare "heroku eseguire export DATABASE_URL = 'postgres: // postutente: postpassword @ posthost/dbname'' e quindi riavviare la mia app? E dovrei inserire tutte le informazioni del mio database? se Heroku dovrebbe aggiungere questo al mio settings.py perché non funziona, dal momento che ho seguito il tutorial? –