Heroku Django Celery: NameError: имя 'БАЗЫ ДАННЫХ' не определено - PullRequest
5 голосов
/ 22 декабря 2011

Я следую этому учебнику, чтобы заставить сельдерея и Джанго бегать по герою.

Тем не менее, я получаю эту ошибку в своих журналах, когда я добавляю указанный код для работника:

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

Мой файл settings.py выглядит как

import djcelery

djcelery.setup_loader()

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

Когда я синхронизировался перед добавлением этой строки, CELERY_RESULT_DBURI = DATABASES['default'], она работала нормально. Согласно документу

При развертывании приложения Django процесс компиляции добавляет следующий код в файл settings.py, чтобы использовать переменную среды DATABASE_URL:

Ответы [ 2 ]

8 голосов
/ 15 января 2012

Heroku добавляет DATABASES конфигурацию в конце вашей settings.py, поэтому, когда вы ссылаетесь на DATABASES в вашем файле settings.py, она не существует.

Вы можете копировать HerokuDATABASES настроек в вашем собственном файле (он просто читается из DATABASE_URL из env, см .: django-heroku-template ) или используйте ваш собственный buildpack .

0 голосов
/ 22 декабря 2011

попробуйте это перед запуском приложения

export DATABASE_URL='postgres://postuser:postpassword@posthost/dbname'

Использование переменных среды - это самый простой способ для Heroku автоматически устанавливать учетные данные базы данных без изменения settings.py

...