Django - PostgreSQL 设置 statement_timeout

use*_*391 5 python django postgresql

我正在使用 Django 1.10 和 PostgreSQL DB。我想弄清楚我是否可以statement_timeout从 Django设置。似乎我不能像connect_timeout(in settings.py)那样做:

DATABASES[DEFAULT]['OPTIONS'] = {
    'connect_timeout': float(os.getenv('DEFAULT_DB_OPTIONS_TIMEOUT', 5))
}
Run Code Online (Sandbox Code Playgroud)

我看到了这样的东西,但我找不到验证它确实有效的方法:

DATABASES[DEFAULT]['OPTIONS'] = {
    'options': '-d statement_timeout=700'
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以直接从数据库设置它,如:

set statement_timeout=5000
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一种从 Django 中做到这一点的方法。

exp*_*xpz 10

没有其他“Django”方式可以做到这一点。Django 的方法是使用您settings.py所指示的方式,除非您的示例不太正确。它应该是:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        ...
        'OPTIONS': {
            'options': '-c statement_timeout=5000',
            ...
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

'OPTIONS' 字典用于数据库连接字符串的参数。Postgres 参数列表可以在这里找到。在options连接字符串参数允许您指定Postgres的命令行参数。此处-c解释该选项。

请注意,超时以毫秒为单位,因此5000上面的意思是 5 秒。