6

有人可以 ELI5 CONN_MAX_AGE 做什么吗?我认为它是这样工作的:

1) 请求 #1 进来,打开到数据库的连接 1

2) 请求 #1 使用连接 1 做一些工作

3) 请求#1 完成。因为 CONN_MAX_AGE 不为零(并且尚未达到年龄),所以连接保持打开状态。

4) 请求#2 进来,Django 重新使用连接#1 到数据库。

但这似乎并没有发生。我的网站上有一个页面,每 15 秒进行一次 AJAX 轮询。在我的开发环境中,我看到打开的连接数(select count(*) from pg_stat_activity),慢慢增长,直到最终我得到

OperationalError: FATAL:  sorry, too many clients already

所以我想知道我哪里出错了。CONN_MAX_AGE 是否仅用于在单个 HTTP 请求中保持连接打开?

更新:

更仔细地查看文档,我看到了这一点:

开发服务器为它处理的每个请求创建一个新线程,从而消除持久连接的影响。不要在开发过程中启用它们。

啊,这似乎意味着一个连接“属于”一个线程。(并且线程可以根据 CONN_MAX_AGE 的值打开/关闭连接)。

4

0 回答 0