gpt4 book ai didi

Django 请求线程和持久数据库连接

转载 作者:行者123 更新时间:2023-12-01 13:49:51 25 4
gpt4 key购买 nike

我正在阅读有关 CONN_MAX_AGE 设置的信息,文档说:

Since each thread maintains its own connection, your database must support at least as many simultaneous connections as you have worker threads.

所以我想知道,在 uWSGI 上,Django 进程如何维护它自己的线程,它是否为每个请求生成新线程并在请求结束时杀死它?

如果是,一个停止的线程如何维持连接?

最佳答案

Django 不控制任何线程(好吧......也许在开发服务器中,但它非常简单),但 uWSGI 是。 uWSGI 会产生一些线程,这取决于它的配置,并且在每个线程中它会运行 django 请求处理。

生成线程可以是动态的或静态的,它可以是严格的 4 个线程,也可以是 2 到 12 个动态线程,具体取决于负载。

不,每个请求都没有新线程,因为这将允许有人通过与它建立许多并发连接来杀死你的服务器,因为它会产生太多线程,以至于没有服务器会接受它。

请求在每个线程上一个接一个地处理,主uWSGI进程将在线程之间循环请求。如果请求多于线程,其中一些将等待直到其他线程完成

在 uWSGI 中也有 workers - 独立的进程可以产生自己的线程,这样负载就可以更好地分散。

你也可以有多个 uWSGI 服务器并告诉你的 HTTP 服务器(apache,代理)在它们之间传播请求。这样你甚至可以在不同的机器上服务你的 uWSGI 实例,并且从外面看起来就像一个大服务器。

关于Django 请求线程和持久数据库连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32750137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com