有人可以解释守护程序模式下的apache mod_wsgi和线程模式下的django fastcgi之间的区别。我认为它们都使用线程进行并发。 假设我将nginx用作Apache mod_wsgi的前端。
更新:
我正在比较在fastemon中内置的django(./manage.py method = threaded maxchildren = 15)和mod_wsgi在“守护程序”模式下(WSGIDaemonProcess示例线程= 15)。他们都使用线程并获得GIL,对吗?
UPDATAE 2:
因此,如果两者相似,apache mod_wsgi对fastcgi有什么好处。我看到fastcgi的优点:
UPDATAE 3:
我现在对nginx + uwsgi感到满意。
UPDATAE 4:
我现在对Nginx + Gunicorn很满意:)
两者都不必使用线程来处理并发请求。这取决于您如何配置它们。如果需要,可以使用多个进程,其中每个进程都是单线程的。
有关mod_wsgi进程/线程模型的更多背景,请参见:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
尽管mod_wsgi自己处理过程管理,但是这些模型是相似的。就过程管理而言,FASTCGI中会发生什么取决于您使用的是哪种FASTCGI托管机制,而您没有说明是什么。
另一个区别是FASTCGI仍然需要单独的FASTCGI到WSGI桥(例如flup),因为mod_wsgi不需要任何形式的桥,因为本地实现了WSGI接口。
最后,FASTCGI进程是某些主管进程或Web服务器的执行/分支,具体取决于托管机制。在mod_wsgi中,进程仅是Apache父进程的分支。通常,这并不太重要,但是确实有一些含义。
还有其他区别,但它们的区别更多,因为与FASTCGI托管机制相比,mod_wsgi提供了更多的功能和可配置性。
无论如何,这个问题有点含糊,您能否更具体地说明您想了解的内容或两者之间的对比以及为什么?这样也许可以更好地针对答案。