【问题标题】:How can I configure Apache2/mod_python/Django to abort request processing after N seconds?如何配置 Apache2/mod_python/Django 在 N 秒后中止请求处理?
【发布时间】:2010-01-07 14:48:21
【问题描述】:

我最近花了很长时间调试我自己的代码中的一个无限循环错误。由于我不能保证我永远不会再犯这种错误,我如何配置我的网络服务器来终止任何等待我的 python 应用程序返回响应超过 N 秒的 apache2 子进程?

在这种情况下,我什至没有注意到这个错误,直到网站开始感觉很慢,此时一个 apache2 进程已经在无限循环中运行了几个小时。如果有一个超时(即使是一个很长的超时,比如 10 分钟)可以捕捉到这个并通过电子邮件发送给我,我会更早知道这个问题,并且它不会影响尽可能多的用户的网站性能。

谷歌搜索,我在 mod_wsgi 配置中发现了一些类似的建议,但如果在我当前的设置下有办法做到这一点,我会更喜欢。谢谢!

【问题讨论】:

    标签: django timeout apache2 mod-python infinite-loop


    【解决方案1】:

    简短的回答是否定的,mod_python 中没有内置功能可以对单个请求进行超时。

    【讨论】:

      【解决方案2】:

      嗯。

      我想知道你是否可以使用 mod_cgi 来运行你的 Python 脚本进行开发。然后回到 mod_python 进行部署。

      然后您可以使用 Apache 核心 TimeOut 指令来限制 Apache 等待 mod_cgi 响应的时间。注: Apache 2.2 即 TimeOut 指令的此扩展仅随 2.2 版本提供。

      HTH

      【讨论】:

      • 我正在专门寻找一种在生产中使用的解决方案,这样由此类问题引起的任何减速都会产生有限的影响并通知我,而不是在我碰巧注意到之前降低服务器的速度.也许更好的解决方案是更通用的负载监控/警报系统。
      • @Shimon,这种超时通常是基于模块设置的,例如我们为 BBC 开发的模块具有编码到其中的超时选项,可以通过模块特定的配置指令进行设置。让我想想。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-14
      • 2020-10-25
      • 2011-11-03
      • 1970-01-01
      • 1970-01-01
      • 2017-02-26
      相关资源
      最近更新 更多