【问题标题】:Is there any need of closing a database connection in django?是否需要在 django 中关闭数据库连接?
【发布时间】:2020-11-22 04:49:06
【问题描述】:

是否需要在 django 中关闭数据库连接。或者django会自动为我们做吗

【问题讨论】:

  • 如果你使用 Django ORM,它将使用一个连接池,并定期刷新(和关闭)连接。
  • 特别是对于某些数据库,如 PostgreSQL,关闭连接是个坏主意,因为创建连接相当“昂贵”。

标签: mysql django database django-models


【解决方案1】:

不需要手动关闭连接,因为 Django 会自动关闭连接。 Django 3.0 documentation 状态:

Django 在第一次创建数据库时打开一个到数据库的连接 数据库查询。它保持此连接打开并在 后续请求。一旦超过 由 CONN_MAX_AGE 定义的最大年龄或当它不可用时 更长。

详细来说,Django 会自动打开一个到数据库的连接 每当它需要一个并且还没有一个时——要么是因为 这是第一个连接,或者因为之前的连接是 关闭。

在每个请求开始时,Django 关闭连接,如果它 已达到其最大年龄。如果您的数据库终止空闲 一段时间后连接,您应该将 CONN_MAX_AGE 设置为较低的 值,这样 Django 就不会尝试使用具有 已被数据库服务器终止。 (这个问题可能只影响 非常低流量的网站。)

在每个请求结束时,Django 关闭连接,如果它有 达到最大年龄或处于不可恢复的错误状态。 如果在处理请求时发生任何数据库错误, Django检查连接是否仍然有效,如果它关闭它 没有。因此,数据库错误最多影响一个请求;如果 连接变得不可用,下一个请求获得一个新的连接。

【讨论】:

  • 我有一个问题,在生产服务器中部署 django api 需要采取什么类型的安全措施?
猜你喜欢
  • 1970-01-01
  • 2013-03-04
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多