有人可以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的值打开/关闭连接。)