2012-01-31 80 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不是討論它的地方。