Django Heroku,服务器不支持SSL,但SSL是必需的



我有一个Django应用程序部署到Heroku和Postgres,我试图添加pgbouncer来扩展应用程序,但我得到了这个错误:

django.db.utils.OperationalError: server does not support SSL, but SSL was required

正如许多其他问题所说,问题在于django-heroku包中的SSL。所以我试着接近,首先:在设置文件的末尾添加以下内容:

del DATABASES['default']['OPTIONS']['sslmode']

错误仍然存在,所以我使用了django-heroku设置功能,并将其修改为直接在中禁用SSL

def custom_settings(config, *, db_colors=False, databases=True, test_runner=True, staticfiles=True, allowed_hosts=True,
logging=True, secret_key=True):
# Database configuration.
# TODO: support other database (e.g. TEAL, AMBER, etc, automatically.)
# Same code as the package
# CHANGING SSL TO FALSE
config['DATABASES'][db_color] = dj_database_url.parse(url, conn_max_age=MAX_CONN_AGE,
    ssl_require=False)

if 'DATABASE_URL' in os.environ:
logger.info('Adding $DATABASE_URL to default DATABASE Django setting.')
# Configure Django for DATABASE_URL environment variable.
config['DATABASES']['default'] = dj_database_url.config(conn_max_age=MAX_CONN_AGE, ssl_require=False)
logger.info('Adding $DATABASE_URL to TEST default DATABASE Django setting.')

并称之为:

django_heroku_override.custom_settings(config=locals(), staticfiles=False, logging=False)

但这并没有起作用,我仍然得到最初的错误

添加Procfile只是为了共谋:

web: bin/start-pgbouncer daphne rivendell.asgi:application --port $PORT --bind 0.0.0.0 -v2
worker: python manage.py runworker channel_layer -v2

我通过更改设置来解决这个问题.py

db_from_env = dj_database_url.config(conn_max_age=0)
django_heroku.settings(locals())

db_from_env = dj_database_url.config(conn_max_age=0, ssl_require=False)
django_heroku.settings(locals() ,databases=False)

这对我来说很有效,因为设置databases=false不允许使用heroku默认数据库配置,并允许传递我设置的ssl_require=false

最新更新