Heroku Django: работающий работник - PullRequest
3 голосов
/ 05 марта 2012

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

Однако, когда я добираюсь до части, где я синхронизирую таблицы Celery и Kombu (в разделе «Запуск рабочего»), я получаю ошибку.

Набрав в своей команде python hellodjango/manage.py syncdb, выдает мне следующее:

...
File "/Users/Alex/Coding/getcelery/venv/lib/python2.7/site-packages/django/db/backends/dummy/base.py", line 15, in complain
    raise ImproperlyConfigured("You haven't set the database ENGINE setting yet.")
django.core.exceptions.ImproperlyConfigured: You haven't set the database ENGINE setting yet.

Кто-нибудь сталкивался с этой проблемой раньше?Должен ли я делать что-то, что не указано в руководстве?

Буду признателен за любые подсказки!

Ответы [ 2 ]

1 голос
/ 17 апреля 2012

Ваш вывод от запуска syncdb локально.Включение надстройки базы данных установит DATABASE_URL в вашей конфигурации и, следовательно, в среде dynos (см. heroku config).Чего он не сделает, так это установит DATABASE_URL локально - вам придется сделать это самостоятельно (или отсортировать другую локальную базу данных)

0 голосов
/ 05 марта 2012

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

import os
import sys
import urlparse

# Register database schemes in URLs.
urlparse.uses_netloc.append('postgres')
urlparse.uses_netloc.append('mysql')

try:

    # Check to make sure DATABASES is set in settings.py file.
    # If not default to {}

    if 'DATABASES' not in locals():
        DATABASES = {}

    if 'DATABASE_URL' in os.environ:
        url = urlparse.urlparse(os.environ['DATABASE_URL'])

        # Ensure default database exists.
        DATABASES['default'] = DATABASES.get('default', {})

        # Update with environment configuration.
        DATABASES['default'].update({
            'NAME': url.path[1:],
            'USER': url.username,
            'PASSWORD': url.password,
            'HOST': url.hostname,
            'PORT': url.port,
        })
        if url.scheme == 'postgres':
            DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'

        if url.scheme == 'mysql':
            DATABASES['default']['ENGINE'] = 'django.db.backends.mysql'
except Exception:
    print 'Unexpected error:', sys.exc_info()
...