在Djang中自动终止LongRunning请求

2024-09-27 23:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个运行django代码的Apache+mod_wsgi的设置,我想添加一个保护层,以防出现非终止视图。最好能终止超过30秒的请求。在

为了测试,我在视图中放了一个time.sleep(60)。在

我尝试过Apache中的TimeOut 30设置,但60秒后仍然会返回curl。在

我看到mod廑wsgi本身提供了三个不同的超时值,但它们似乎都不适用于长时间运行的请求。在

有一个标准的Django中间件吗?或者我在Apache或mod wsgi上缺少一个旋钮?在


Tags: 中间件django代码视图modwsgi标准time
1条回答
网友
1楼 · 发布于 2024-09-27 23:22:20

实际上,在多线程应用程序中终止单个Python请求线程是非常困难的。您所能做的最好的就是决定关闭整个进程并重新启动它。因为这样的操作会中断并发请求,因此您需要将自己限制在单线程配置中。在

即使是这样,mod帴wsgi3.X中的支持也不理想。守护程序模式有不活动超时,但实际上它会导致进程在两种情况下重新启动。第一种情况是根本没有请求,进程处于空闲状态。第二种情况是所有请求线程都被阻塞,超时过期。在

在modüwsgi 4.X中(此时在repository trunk中),这两个概念已经被分离,现在不活动超时只适用于完全空闲且没有并发请求的进程。添加了一个新的阻塞超时,以单独指定整个进程被阻塞时的超时。你可以用后一种。在

如果你想了解更多关于这个新选项的信息,你需要去mod wsgi邮件列表来讨论它。在

相关问题 更多 >

    热门问题