【发布时间】:2017-03-08 00:49:15
【问题描述】:
我有一个带有 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"
注意:一个答案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:嘿,你好吗?具体来说,我应该如何连接到
settings.py中的pgbouncer?我在问题中添加了一个 sn-p 代码来说明我认为应该如何完成。你能帮忙改正吗? :-) -
你的引擎不应该是 psycopg2 还是 postgis 而不是 o
-
@e4c5:已更正。现在就来看看吧。
标签: django postgresql pgbouncer