5

このチュートリアルに従って、セロリとジャンゴをherokuで実行しています。

ただし、ワーカーに指定されたコードを入力すると、ログに次のエラーが表示されます。

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 環境変数が使用されます。

4

2 に答える 2

8

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.

于 2012-01-15T16:49:16.130 に答える
0

アプリを実行する前にこれを試してください:

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

環境変数を使用することは、Heroku が settings.py を変更せずにデータベース資格情報を自動的に設定する最も簡単な方法です。

于 2011-12-22T07:09:34.310 に答える