Django http连接超时

Boj*_*vic 6 python apache django mod-wsgi

我有Django + mod_wsgi + Apache服务器.我需要更改默认的HTTP连接超时.apache配置中有Timeout指令,但它不起作用.

我怎么设置它?

ndp*_*dpu 0

mod_wsgi 指令中有几个超时选项WSGIDaemonProcess(查看 request-timeout):

https://modwsgi.readthedocs.io/en/develop/configuration-directives/WSGIDaemonProcess.html

不活动超时=sss (2.0+)

定义当守护进程进入空闲状态时,在关闭并重新启动守护进程之前允许经过的最大秒数。就该选项而言,空闲意味着在定义的时间段内没有接收到新的请求,或者当前请求没有尝试读取请求内容或生成响应内容。此选项的存在是为了允许重新启动在守护进程中运行的不常用应用程序,从而允许回收正在使用的内存,并且在加载任何应用程序或处理请求之前,进程大小会回落到初始启动大小。

请求超时=sss

定义在守护进程重新启动之前允许请求运行的最大秒数。这可用于从请求无限期阻塞的场景中恢复,并且如果以这种方式消耗所有请求线程,将导致整个 WSGI 应用程序进程被阻塞。

根据线程选项的设置,守护进程是仅使用一个线程还是使用多个线程来处理请求,此选项的行为方式有所不同。

如果只有一个线程,因此进程一次只能处理一个请求,一旦超时,就会启动进程的重新启动。

如果有多个线程,请求超时将应用于所有线程中任何请求的平均运行时间。这意味着请求的运行时间可以超过请求超时时间。这样做是为了减少中断其他正在运行的请求并导致用户看到失败的可能性。因此,在仍有能力处理更多请求的情况下,如果可能,将延迟进程的重新启动。

死锁超时=sss (2.0+)

定义在检测到 Python GIL 上的潜在死锁后,关闭并重新启动守护进程之前允许经过的最大秒数。默认值为 300 秒。此选项的存在是为了解决由于恶意 Python C 扩展模块在进入阻塞或长时间运行操作时无法正确释放 Python GIL 而导致守护进程冻结的问题。

关闭超时=sss

定义等待守护进程由于达到最大请求数或不活动超时而正常关闭时,或者将用户启动的 SIGINT 信号发送到守护进程时允许经过的最大秒数。当达到这个超时时,守护进程将被强制退出,即使仍然存在活动请求或者它仍在运行 Python 退出函数。如果未定义此选项,则关闭超时将设置为 5 秒。请注意,当 Apache 本身停止或重新启动时,此选项不会更改应用于守护进程的关闭超时。该超时值在 Apache 内部定义为 3 秒,并且不能被覆盖。

...

有关的文档WSGIDaemonProcess

使用 mod_wsgi 守护进程模式
定义进程组