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中使用多线程实现类似的效果,它将保持与数据库的多个连接。
据我了解,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中使用多线程实现类似的效果,它将保持与数据库的多个连接。