2011-10-07 64 views
3

我有這兩種配置。我需要知道有什麼區別,哪些更好更快?這兩個配置運行Django有什麼不同?

第一的conf:

#!/home/user/bin/python 
import sys, os 
sys.path.insert(0,"/home/user/projects/") 
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings' 

from flup.server.fcgi import WSGIServer 
from django.core.handlers.wsgi import WSGIHandler 
WSGIServer(WSGIHandler()).run() 

二的conf:

#!/home/user/bin/python 
import sys, os 
sys.path.insert(0,"/home/user/projects/") 
os.environ['DJANGO_SETTINGS_MODULE'] = 'django_project.settings' 

from django.core.servers.fastcgi import runfastcgi 
runfastcgi(method="threaded", daemonize="false") 

感謝:d

更新:

I did a quick test with python cProfile lib。在文檔中,WSGI對應於First conf,FCGI對應於Second conf。

+1

你不會得到像「FastCGI總是比wsgi更快」的答案,如果這就是你想要的。真正的答案是,「這取決於您的軟件和硬件配置。」嘗試運行兩者,並用諸如JMeter之類的東西進行基準測試。 http://jakarta.apache.org/jmeter/ –

+0

感謝尼克,我要去測試一下bechmark。 – eos87

回答

1

Django本身使用WSGI,因此通過FastCGI運行它會爲HTTP消息的傳輸添加另一層。話雖如此,如果您有快速FastCGI容器或慢速WSGI容器之間的選擇,您可能會更好的生活在額外的層。

+0

那麼,即使WSGI容器比較慢,最好使用第一種配置嗎? – eos87

+0

也許吧。我對容器一無所知。 –

+0

WSGI是一個API。您沒有太多選擇,只能讓WSGI坐在某種適配器上。對於FASTCGI/SCGI/AJP,您可以使用flup。對於mod_wsgi,它將WSGI連接到Apache堆棧。然後你有一個gunicorn,將WSGI直接連接到一個Python HTTP服務器。無論如何,這個層通常不是瓶頸,對於分析應用程序和數據庫的性能來說更重要。 –

相關問題