Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Heroku Django Celery: NameError: name 'DATABASES' is not defined

I am following along this tutorial to get celery and django running on heroku.

However, I get this error in my logs when I put in the specified code for the worker:

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

My settings.py looks like

import djcelery

djcelery.setup_loader()

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

When I synced before adding this line, CELERY_RESULT_DBURI = DATABASES['default'], it ran fine. According to 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:

like image 226
saul.shanabrook Avatar asked Dec 22 '11 05:12

saul.shanabrook


1 Answers

Heroku is adding DATABASES configuration at the end of your settings.py, so when you make reference to DATABASESin your settings.py, it doesn't exists.

You can replicate Heroku DATABASES settings in your own file (it just read from DATABASE_URL from env, see : django-heroku-template) or use your own buildpack.

like image 128
cyberdelia Avatar answered Sep 28 '22 04:09

cyberdelia