python - 限制wsgi中的系统资源

标签 python django signals mod-wsgi

我在共享主机上的 mod_wsgi 环境中运行 Django。我想限制请求可以使用的资源,如果超过该数量,理想情况下会引发异常。 WSGI选项如下:

WSGIRestrictSignal off
WSGIRestrictStdout off

VirtualHost 具有以下内容:

WSGIDaemonProcess django processes=10 threads=1 display-name=django-web
WSGIProcessGroup django

在请求中我做了以下事情:

signal.setrlimit(resource.RLIMIT_CPU, (10, -1))
signal.signal(signal.SIGXCPU, cpu_signal)
signal.signal(signal.SIGALRM, timeout_signal)
signal.alarm(1)
#Do some stuff
signal.alarm(0)

然而,当我运行请求时,我得到的错误信号只在主线程中起作用,尽管当我打印出事件线程的数量和我得到的线程名称时,我得到的是一个线程,当前线程名称是 MainThread,所以我不不明白为什么 Python 试图设置它不相信它在主线程中运行的信号。

我正在运行 Python 2.7.2、Django 1.3.1、Apache 2.2.21 和 WSGI 3.3

最佳答案

发送电子邮件到 mod_wsgi 邮件列表,然后在那里讨论什么是可能的。在 mod_wsgi 4.0 dev 版本中,有一些实验性机制可以在 CPU 使用率超过某个值时终止进程,但它是进程范围的。由于可以使用多线程,因此很难在每个请求的基础上执行此操作。在 stackoverflow 上这里不是讨论它的地方。

关于python - 限制wsgi中的系统资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9088324/

相关文章:

audio - 如何使用音频文件作为输入实现单边带抑制载波调制?

python - Django allauth 自定义模板不散列密码

python - 在 OS X 中设置 pythonpath

python - 正确的信号顺序以安全停止进程

linux - 如何动态增加进程的堆栈大小

html - 在 django 服务器中运行时 html 模板的 css 问题

python - 如何从具有纵横比的视频中调整帧的大小

python - 如果它们之间的差异小于 pandas 中的固定值,则将行值替换为先前的值

python - float 分类器

Python 3 : No module named 'tqdm'