Django-Einstellungen bei Verwendung von pgbouncer
Ich habe eine Django-Website mit Postgresql-Backend, für die ich @ verwendpgbouncer
für Datenbankverbindungspooling (Transaktionsmodus).
Die Anwendung und die Datenbank befinden sich auf separaten Servern (jeweils 1 Server). Ich habe installiertpgbouncer
auf dem Anwendungsserver. Meine Frage ist: was soll die Konfig in @ sesettings.py
? Beachte, dass ich @ benutUnix sockets für die Verbindung zu pgbouncer.
Meine jetzigesettings.py
enthält:
DATABASE_URL = 'postgres://user1:pass1@xx.xxx.xxx.xxx:5432/db1'
DATABASES = {
'default': dj_database_url.config(default=DATABASE_URL)
}
Relevante Abschnitte vonpgbouncer.ini
sind
[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
enthält:
"user1" "pass1"
Hinweis Eine Antwortist hie, funktioniert aber bei mir nicht, da die DB in meinem Fall nicht lokal verfügbar ist. Ich muss die Umgebungsvariable DATABASE_URL festlegen, anstatt @ zu verwendedefault = '...'
.
in Vorschlag scheint zu sein, @ zu behandepgbouncer
als Datenbank insettings.py
. Wäre in diesem Fall etwas wie die folgende Arbeit?
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',
}