У меня есть сайт Django с бэкэнд Postgresql, для которого я использую pgbouncer
для объединения пула db (режим транзакции).Настройки Django при использовании 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"
Примечание: Один ответ is 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',
}
Ваш вопрос непонятен. У вас возникли проблемы с подключением pgbouncer к postgresql или подключением django к pgbouncer? Если это последний, вы просто рассматриваете pgbouncer как базу данных, это все – e4c5
@ e4c5: эй, как дела? В частности, как мне подключиться к pgbouncer в 'settings.py'? Я добавляю фрагмент кода в вопросе, чтобы проиллюстрировать, как я думаю, что это должно быть сделано. Вы могли бы исправить это? :-) –
Не должен ли ваш двигатель быть psycopg2 или postgis вместо o – e4c5