我有一个使用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"
注意: 这里有一个答案,但对于我的情况并不适用,因为在我这种情况下数据库不可在本地使用。我需要设置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',
}
settings.py
中连接到pgbouncer?我将在问题中添加一段代码片段以说明我认为应该这样做。你能帮忙纠正一下吗? :-) - Hassan Baig