我有一个带有 Postgresql 后端的 Django 网站,我将其pgbouncer
用于数据库连接池(事务模式)。
应用程序和数据库驻留在不同的服务器上(各 1 个服务器)。我已经安装pgbouncer
在应用服务器上。我的问题是:配置应该是什么settings.py
?请注意,我使用Unix 套接字连接到 pgbouncer。
我的当前settings.py
包含:
DATABASE_URL = 'postgres://user1:pass1@xx.xxx.xxx.xxx:5432/db1'
DATABASES = {
'default': dj_database_url.config(default=DATABASE_URL)
}
的相关部分pgbouncer.ini
是:
[databases]
db1 = host=xx.xxx.xxx.xxx port=5432 dbname=db1
listen_addr = *
listen_port = 6432
auth_type = md5
unix_socket_dir = /var/run/postgresql
pool_mode = transaction
max_client_conn = 200
default_pool_size = 300
userlist.txt
包含:
"user1" "pass1"
注意:一个答案是here,但对我不起作用,因为数据库在我的情况下在本地不可用。我需要设置 DATABASE_URL 环境变量,而不是使用default = '...'
.
一个建议似乎是pgbouncer
将settings.py
. 在那种情况下,会像下面这样工作吗?
if PRODUCTION == '1':
#PRODUCTION is set to '1' if in production environment
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'pgbouncer',
'USER': 'user1',
'PASSWORD': 'pass1',
'HOST': '/var/run/postgresql',
'PORT': '6432',
}