gpt4 book ai didi

python - 从 Django 中的死数据库连接中恢复

转载 作者:行者123 更新时间:2023-11-29 12:04:58 25 4
gpt4 key购买 nike

假设我们有以下代码(在带有 PostgreSQL 后端的 Django 1.6 上测试过):

from django.db import connection
from django.db.utils import OperationalError

cursor = connection.cursor()

try:
# kill our own database connection
cursor.execute('SELECT pg_terminate_backend(pg_backend_pid())');
except OperationalError:
# Is it possible to get a fresh connection here?
cursor = connection.cursor() # not useful
# Will result in:
# django.db.utils.InterfaceError: connection already closed
cursor.execute('SELECT 1;')

显然,此代码仅用于示例目的——在现实世界中,我并不是故意终止我自己的连接,但我的连接可能会被数据库终止(OOM killer 、数据库管理员清理房间、重新启动整个数据库等)。有什么方法可以从现在终止的数据库连接中恢复,以某种方式强制 Django 建立新连接?

最佳答案

在重新获取光标之前关闭连接。 Django 将尝试重新连接到数据库:

try:
...
except OperationalError:
connection.close()
cursor = connection.cursor()

关于python - 从 Django 中的死数据库连接中恢复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28720874/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com