部署Django(fastcgi,apache mod_wsgi,uwsgi,gunicorn)

Rom*_*giy 17 python deployment django mod-wsgi fastcgi

有人可以解释守护进程模式下的apache mod_wsgi和线程模式下的django fastcgi之间的区别.我认为它们都使用线程来实现并发性. 假设我使用nginx作为apache mod_wsgi的前端.

更新:

我正在比较内置fastcgi(./ manage.py方法=线程maxchildren = 15)的django和'daemon'模式下的mod_wsgi(WSGIDaemonProcess示例threads = 15).他们都使用线程并获得GIL,对吗?

UPDATAE 2:

所以,如果它们都相似,那么apache mod_wsgi对fastcgi有什么好处.我看到fastcgi的这些优点:

  • 我们不需要apache
  • 我们消耗更少的RAM
  • 我注意到fastcgi的开销较小

UPDATAE 3:

我现在对nginx + uwsgi很满意.

UPDATAE 4:

我现在对nginx + gunicorn很满意:)

Gra*_*ton 10

两者都不必使用线程来处理并发请求.这取决于您如何配置它们.如果需要,您可以使用多个进程,其中每个进程都是单线程的.

有关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父进程的fork.一般来说,这并不重要,但确实有一些影响.

还有其他差异,但它们的出现更多是因为mod_wsgi提供了比FASTCGI托管机制更多的功能和可配置性.

无论如何,问题有点模糊,你能更具体地说明你想知道的是什么,或者两者之间的对比以及为什么?然后可以更好地针对答案.