如果数据库连接丢失,强制 django 重新打开数据库连接

Sym*_*mon 7 python django postgresql

在我的 Python-Django Web 应用程序中,有时数据库会断开连接(与我的测试环境相关的问题,不太稳定......)并且我的 Web 应用程序给我这个错误:

  File "/usr/lib/python3.6/site-packages/django/db/backends/postgresql/base.py", line 222, in create_cursor,
django.db.utils.InterfaceError: connection already closed,
    cursor = self.connection.cursor()
Run Code Online (Sandbox Code Playgroud)

现在,我如何告诉 django 重试打开连接并继续?看来 django 仍然停留在这一点上......

谢谢。

Kev*_*nry 4

没有办法告诉 Django 它应该在连接错误时重试。相反,它的设计目的就是简单地满足该请求。从文档中:

\n\n
\n

如果在处理请求时发生任何数据库错误,Django 会检查连接是否仍然有效,如果无效则关闭它\xe2\x80\x99t。因此,数据库错误最多影响一个请求;如果连接变得不可用,下一个请求将获得新的连接。

\n
\n\n

但是,如果您遵循文档中的建议,这应该不是问题:

\n\n
\n

如果您的数据库在一段时间后终止空闲连接,则应设置CONN_MAX_AGE为较低的值,以便 Django\xe2\x80\x99 不会尝试使用已被数据库服务器终止的连接。

\n
\n