gpt4 book ai didi

python - 在 Django 中自动终止长时间运行的请求

转载 作者:太空狗 更新时间:2023-10-30 01:03:31 24 4
gpt4 key购买 nike

我有一个使用 Apache + mod_wsgi 运行 django 代码的设置,我想添加一层保护以防非终止 View 滑入。可以杀死超过 30 个请求的东西秒将是理想的。

为了测试,我只是在 View 中放置了一个 time.sleep(60)

我已经在 Apache 中尝试了 TimeOut 30 设置,但我仍然在 60 秒后返回 curl。

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

是否有用于此的标准 Django 中间件,或者是否有我在 Apache 或 mod_wsgi 上缺少的旋钮?

最佳答案

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

即便如此,mod_wsgi 3.X 中的支持也不是理想的选择。 daemon模式有inactivity-timeout,但实际上在两种情况下会导致进程重启。第一种是当根本没有请求并且进程空闲时。第二种是当所有请求线程都已阻塞且超时到期时。

在 mod_wsgi 4.X 中(此时在存储库主干中),这两个概念已经分开,现在 inactivity-timeout 仅适用于完全空闲的进程,没有并发请求。添加了一个新的阻塞超时以单独指定整个进程被阻塞时的超时。您可以使用后一种方法。

如果您想了解有关新选项的更多信息,您需要转到 mod_wsgi 邮件列表进行讨论。

关于python - 在 Django 中自动终止长时间运行的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7730257/

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