Как запустить приложение на Heroku с Python Django на MySql?KeyError: '', code = H10 desc = "Приложение упало" - PullRequest
0 голосов
/ 02 марта 2019

Я пытался получить свое первое приложение в Интернете.Использование в качестве облачного приложения платформы Heroku .Приложение построено на Python с Django и предназначено для использования базы данных MYSQL, для которой предоставляется add_on JAWSDB.URL-адрес JAWSDB установлен в DATABASE_URL.Код моего приложения общедоступен на GitHub .Я могу развернуть код на Heroku, но при открытии приложения появляется ошибка приложения.(См. Журнал ниже).Я думаю, что это связано с my_settings , честно говоря, я не знаю, что нужно исправить.

  1. Это база данных, которая не открывается?at=error code=H10 desc="App crashed" method=GET path="/" host=learningnow.herokuapp.com Однако возможно подключиться к удаленной базе данных через MySql workbench.
  2. Журнал ссылается на

engine = SCHEMES [url.scheme] if engineNone else engine KeyError: ''

Являются ли

django_heroku.settings (locals ())

, для которых я предполагаюDATABASE_URL найден, но, кажется, не работает.

Это связано с config = parse (s, engine, conn_max_age, ssl_require ).Однако в моей последней попытке я поставил

DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql', 'NAME': dj_database_url.config (default = os.environ [DATABASE_URL], ssl_require = False),}

2019-03-02T15: 33: 06.132322 + 00: 00 app [web.1]: engine = SCHEMES [url.scheme] ifДвижок отсутствует. Движок 2019-03-02T15: 33: 06.132370 + 00: 00 app [web.1]: KeyError: '' 2019-03-02T15: 33: 07.351885 + 00: 00 heroku [роутер]: at = ошибкаcode = H10 desc = "Приложение не работает" метод = GET path = "/" host = learningnow.herokuapp.com request_id = 28373f9d-99b1-4362-8054-de2e72aac130 fwd = "81.207.96.28" dyno = connect = service = status =503 байта = протокол = https 2019-03-02T15: 33: 08.147290 + 00: 00 heroku [роутер]: at = код ошибки = H10 desc = метод "Приложение зависло" = GET path = "/ favicon.ico" host = learningnow.herokuapp.com request_id = 073e5f94-a1ce-41ea-979c-4dabb341ea86 fwd = "81.207.96.28" dyno = connect = service = status = 503 байта = протокол = https

См. последнюю часть my_settings.pyфайл, который предназначен для подключенияt и откройте приложение на Heroku:

# Heroku settings

, если os.getcwd () == '/ app': import django_heroku django_heroku.settings (locals ())

import dj_database_url

DATABASES = {
    'default': {
                'ENGINE': 'django.db.backends.mysql',
                'NAME': dj_database_url.config(default=os.environ[DATABASE_URL],
                ssl_require=False),
    }
}

# Honor the 'X-Forwarded-Proto' header for request.is_secure().
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')

# Allow all host headers.
ALLOWED_HOSTS = ['*']

# Static asset configuration
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATICFILES_DIRS = (
    os.path.join(BASE_DIR, 'static'),
)

Anyпредложения о том, как сделать это лучше?

1 Ответ

0 голосов
/ 13 апреля 2019

Проблема решена, требуется несколько изменений кода.См. введите описание ссылки здесь

для полного рабочего приложения для Heroku, подключенного к базе данных дополнения JawsDB (MySql) с использованием платформы Python с Django.

Особенно нужно было установить соединение с JawsDb: см. Последнюю часть файла my_settings.txt:

if os.getcwd() == '/app':
import django_heroku

DEBUG = True
ALLOWED_HOSTS = ['learningnow.herokuapp.com']

DATABASE_URL = os.getenv('DATABASE_URL')
SECRET_KEY = os.getenv('SECRET_KEY')

database_attr = DATABASE_URL.split(':')

JaName = database_attr[3].split('/')[1].rstrip("'")
JaUser = database_attr[1].lstrip('//')
JaPwrd = database_attr[2].split('@')[0]
JaHost = database_attr[2].split('@')[1]
JaPort = int(database_attr[3].split('/')[0])

DATABASES = { 
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': JaName,
        'USER': JaUser,
        'PASSWORD': JaPwrd,
        'HOST': JaHost,
    }
}`
...