2012-01-31 78 views
2

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

WSGIRestrictSignal off 
WSGIRestrictStdout off 

的虚拟主机有以下几点:

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,所以我没有说明d为什么Python试图设置它不相信它在主线程中运行的信号。

我运行的Python 2.7.2,Django的1.3.1的Apache 2.2.21和WSGI 3.3

+0

描述自己的目标,例如:“我想限制消耗”。 – 2012-01-31 23:19:12

回答

0

发送电子邮件至mod_wsgi的邮件列表,并会讨论有什么是可能的。在mod_wsgi 4.0 dev版本中,当CPU使用率超过某个值时,有一些杀死进程的实验性机制,但它在进程范围内。根据每个请求做它是很困难的,因为可以使用多线程。在这里,stackoverflow不是讨论它的地方。