python - Django Heroku,服务器不支持 SSL,但需要 SSL

标签 python django heroku pgbouncer

我有一个 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

最佳答案

我通过在settings.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!

关于python - Django Heroku,服务器不支持 SSL,但需要 SSL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64076840/

相关文章:

python - K.ctc_batch_cost() 中 input_length 的意思是什么

node.js - heroku node.js bash : node: command not found

python - Worker进程运行时异常 "heroku local"

javascript - 如何在 Rails 应用程序中从 Javascript 写入 Heroku 的日志?

Django Rest Framework AttributeError 'function' 对象在 router.register 中没有属性 'model'

python - Django 确保空白字段

python - LinearNDInterpolatorExtrapolate 通过简单的示例返回错误

python - 如何修复此 ImportError : No module named win32api?(win32api 路径变量)

python - 使用代码将任何 2D 图像变成可 3D 打印的雕塑

python - Django 通用 View ManyToMany 与 "through"模型