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:
Heroku is adding DATABASES
configuration at the end of your settings.py
, so when you make reference to DATABASES
in 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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With