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