有人能解释一下守护程序模式下的apache mod_wsgi和线程模式下的django fastcgi的区别吗?我认为它们都使用线程来实现并发。假设我使用nginx作为mod_wsgi的前端。
更新:
我正在比较快速and (./manage.py method=threaded maxchildren=15)中内置的django和'daemon‘模式下的mod_wsgi (WSGIDaemonProcess示例threads=15)。它们都使用线程并获取GIL,我说的对吗?
更新2:
那么,如果它们都是相似的,apache mod_wsgi与fastcgi相比有什么好处吗?我看到了fastcgi的以下优点:
更新3:
我现在对nginx + uwsgi很满意。
更新4:
我现在很高兴使用nginx + gunicorn :)
发布于 2010-04-07 19:22:11
两者都不需要使用线程来处理并发请求。这取决于您如何配置它们。如果需要,您可以使用多个进程,其中每个进程都是单线程的。
有关mod_wsgi进程/线程模型的更多背景信息,请参阅:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
这些模型是相似的,尽管mod_wsgi自己处理流程管理。就进程管理而言,FASTCGI中发生的事情取决于您正在使用的FASTCGI托管机制,而您并没有说那是什么。
另一个不同之处是,FASTCGI仍然需要一个单独的FASTCGI到WSGI的桥,比如flup,因为mod_wsgi不需要任何类型的桥,因为它在本地实现了WSGI接口。
最后,FASTCGI进程是某个管理进程或web服务器的exec/fork,这取决于托管机制。在mod_wsgi中,进程只是Apache父进程的分支。一般来说,这不是太重要,但确实有一些影响。
还有其他差异,但它们之所以出现,更多是因为mod_wsgi提供了比FASTCGI托管机制更多的功能和可配置性。
无论如何,这个问题有点模糊,你能更具体地说明你想知道的是什么,或者两者之间的对比及其原因吗?答案可能会更有针对性。
https://stackoverflow.com/questions/2591715
复制相似问题