Настройки Django при использовании pgbouncer
У меня есть сайт Django с бэкэндом Postgresql, для которого я используюpgbouncer
для пула соединений дб (режим транзакции).
Приложение и БД находятся на отдельных серверах (по 1 серверу каждый). Я установилpgbouncer
на сервере приложений. Мой вопрос: что должно быть в конфигурацииsettings.py
? Обратите внимание, что я используюUnix сокеты для подключения к pgbouncer.
Мой текущийsettings.py
содержит:
DATABASE_URL = 'postgres://user1:[email protected]: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',
}