Configurações do Django ao usar o pgbouncer
Eu tenho um site Django com back-end do Postgresql, para o qual estou utilizandopgbouncer
para pool de conexão db (modo de transação).
O aplicativo e o banco de dados residem em servidores separados (1 servidor cada). Eu instaleipgbouncer
no servidor de aplicativos. Minha pergunta é: qual deve ser a configuraçãosettings.py
? Note que eu estou usandoSoquetes Unix para conectar ao pgbouncer.
Meu atualsettings.py
contém:
DATABASE_URL = 'postgres://user1:[email protected]:5432/db1'
DATABASES = {
'default': dj_database_url.config(default=DATABASE_URL)
}
Seções relevantes depgbouncer.ini
estão:
[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
contém:
"user1" "pass1"
Nota: Uma respostaé aqui, mas não funciona para mim, pois o banco de dados não está disponível localmente no meu caso. Preciso definir a variável de ambiente DATABASE_URL, em vez de usardefault = '...'
.
Uma sugestão parece ser tratarpgbouncer
como um banco de dados emsettings.py
. Nesse caso, algo como o seguinte funcionaria?
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',
}