![](/img/trans.png)
[英]Django on Google App Engine connection to Cloud SQL, cannot connect
[英]Google Cloud App Engine - Django App using PostGreSQL loses SQL connection
我一直在通过 Google Cloud App Engine 为我的 Django 应用程序使用 PostGreSQL。 最近,我开始看到以下问题:
...
File "/env/lib/python3.7/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs)
File "/env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection self.connect()
File "/env/lib/python3.7/site-packages/django/db/utils.py", line 90, in __exit__ raise dj_exc_value.with_traceback(traceback) from exc_value
File "/env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 220, in ensure_connection self.connect()
File "/env/lib/python3.7/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs)
File "/env/lib/python3.7/site-packages/django/db/backends/base/base.py", line 197, in connect self.connection = self.get_new_connection(conn_params)
File "/env/lib/python3.7/site-packages/django/utils/asyncio.py", line 26, in inner return func(*args, **kwargs)
File "/env/lib/python3.7/site-packages/django/db/backends/postgresql/base.py", line 185, in get_new_connection connection = Database.connect(**conn_params)
File "/env/lib/python3.7/site-packages/psycopg2/__init__.py", line 126, in connect conn = _connect(dsn, connection_factory=connection_factory, **kwasync)
django.db.utils.OperationalError: FATAL: remaining connection slots are reserved for non-replication superuser connections
我的数据库设置如下:
if os.getenv('GAE_APPLICATION', None):
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': '/cloudsql/MYAPP:europe-west2:MYAPP',
'NAME': 'MYNAME',
'USER': 'MYUSER',
'PASSWORD': access_secret_version("MYSECRET_SQL_PASSWORD"),
'PORT': '5432',
}
}
这实际上意味着什么?
这基本上意味着您正在达到实例的并发连接限制,并且需要增加限制或关闭一些不需要的连接。
您可以通过使用max_connections 标志来配置它来增加连接限制,但是,建议设置一个保持实例稳定的限制。 您还可以使用更高的 memory 更改您的实例机器类型,因为它提供了更高的默认并发连接限制。
另一种解决方案是使用带有pgbouncer的数据库连接池,因为 Django 框架不提供数据库连接池。 此外,在某些情况下,将CONN_MAX_AGE设置为零会有所帮助,因为它允许在每个请求结束时关闭数据库连接。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.