Проблема
У меня есть приложение 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
]