код ошибки heroku h13 при использовании postgresql - PullRequest
0 голосов
/ 23 апреля 2020

Проблема

У меня есть приложение Django, которое я размещаю на heroku. Это не первое, что я делаю, настолько, что я в значительной степени использую ту же конфигурацию для 4 приложений, которые я там размещал. Тем не менее, у меня проблема с последней версией: при развертывании с настройкой sqlite3 по умолчанию все работает как надо, но если я использую настройки prod, которые я обычно использую в других моих проектах, происходит сбой, и я получаю ошибку H13 code.

Что я пробовал

Я явно пробовал настройки сервера локально, и все работает как надо. Однако я не смог проверить напрямую с оружейным рожком, и мне интересно, есть ли там проблема. Я попытался удалить настройки heroku, жестко запрограммировав переменные env (в случае, если я пропустил).

Код

Я добавлю немного кода, если это необходимо, но в основном, когда я заменю это

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('DB_NAME'),
        'USER': os.environ.get('DB_USR'),
        'PASSWORD': os.environ.get('DB_PWD'),
        'HOST': os.environ.get('DB_IP'),
        'PORT': os.environ.get('DB_PORT'),
        'OPTIONS': {'sslmode': 'require', },
    }
}

этим

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': 'db.sqlite3',
    }
}

все работает. Просто я не могу работать с этим в производстве, особенно на Heroku. У меня есть три файла настроек, local.py и server.py, оба наследуются от base.py. Файл server.py просто устанавливает базу данных, secret_key, разрешенные хосты и настройки хранилища. Я не хочу просто копировать и вставлять стену кода конфигурации, я добавлю его позже, если потребуется.

Я попытался создать фиктивный проект с моей конфигурацией и без приложений, и столкнулся с той же проблемой. Хотя мне пришлось кое-что настроить, чтобы это не зависело от этих приложений, оно все равно работало локально, а H13 - на героку.

Дополнительные примечания

Я действительно изо всех сил пытался придать смысл про ошибки героку в целом и потерял на них много времени, да так, что думаю переключиться на VPS. Есть ли способ лучше понять эти ошибки?

Редактировать

Я создал новый проект на дистрибутиве linux, чтобы я мог тестировать непосредственно с gunicorn. Он перестает работать, когда я добавляю промежуточное программное обеспечение "wagtail.core.middleware.SiteMiddleware", поэтому, может быть, оно как-то связано с этим? Я добавляю конфигурацию промежуточного программного обеспечения, если кто-то может объяснить мне, почему она не работает, и только когда я использую другую базу данных, кроме sqlite3.

MIDDLEWARE = [
    # Default django
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.clickjacking.XFrameOptionsMiddleware',
    'django.middleware.security.SecurityMiddleware',

    # Third party
    'wagtail.core.middleware.SiteMiddleware',
    'wagtail.contrib.redirects.middleware.RedirectMiddleware',

    'honeypot.middleware.HoneypotMiddleware',    # Honeypot forms
    'axes.middleware.AxesMiddleware',            # Should be last
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...