有人能解释一下守护进程模式下的apache mod_wsgi和线程模式下的django fastcgi之间的区别吗。我认为它们都使用线程来实现并发。 假设我使用nginx作为apache mod_wsgi的前端。
更新:
我比较的是fastcgi中的django(./manage.py method=threaded maxchildren=15)和'daemon'模式中的mod_wsgi(WSGIDaemonProcess示例线程=15)。他们都使用线程并获得GIL,我说得对吗?
更新2:
因此,如果两者相似,那么apache mod_wsgi对fastcgi有什么好处吗。我看到了fastcgi的优点:
更新3:
我现在对nginx+uwsgi很满意。
更新4:
我现在对nginx+gunicorn很满意:)
两者都不需要使用线程来处理并发请求。这取决于您如何配置它们。如果需要,可以在每个进程都是单线程的情况下使用多个进程。
有关mod_wsgi进程/线程模型的更多背景信息,请参见:
http://code.google.com/p/modwsgi/wiki/ProcessesAndThreading
这些模型是相似的,尽管mod_wsgi自己处理流程管理。就流程管理而言,FASTCGI中发生的事情取决于您正在使用的FASTCGI托管机制,而您并没有说明这是什么。
另一个区别是,FASTCGI仍然需要一个单独的FASTCGI到WSGI的桥,例如flup,其中as mod_WSGI不需要任何类型的桥,因为它本机实现了WSGI接口。
最后,FASTCGI进程是某些主管进程或web服务器的exec/fork,依赖于宿主机制。在mod_wsgi中,进程是Apache父进程的fork only。一般来说,这并不重要,但确实有一些影响。
还有其他的区别,但它们产生的原因更多,因为mod_wsgi提供了比FASTCGI托管机制更多的功能和可配置性。
不管怎样,这个问题有点模糊,你能更具体地说明你想知道什么,或者两者之间的对比以及为什么?答案也许会更有针对性。
相关问题 更多 >
编程相关推荐