Django 持久连接(CONN_MAX_AGE)是如何分布的?

How are Django persistent connections(CONN_MAX_AGE) distributed?

据我了解,Django 与数据库的持久连接数 CONN_MAX_AGE 表示。

如果是这样,将连接分发到应用程序的规则是什么?

例如。

case 1. 无论是多进程多线程环境,应用每次请求都会分发连接。(比如异步环境下,每个请求可以有一个连接)

case 2. connections被分配到每个thread(thread level)

case 3. 连接分布到各个进程(进程级)

有什么方法可以监控这种行为吗?,

DB 中是否有任何预先设置以方便 Django 中的 DB conntion 池。

class ConnectionHandler(object):
    def __init__(self, databases=None):
        """
        databases is an optional dictionary of database definitions (structured
        like settings.DATABASES).
        """
        self._databases = databases
        self._connections = local()

连接是本地线程。

请注意,从数据库的角度来看,几乎总是不建议在多个线程之间共享连接。

当然,进程之间不共享非持久数据。

对于连接池,您需要在 django 和数据库之间使用一些代理。但是如果你使用持久连接,你可以在wsgi中使用多线程实现类似的效果,它将保持与数据库的多个连接。