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

2024-04-24 12:32:07 发布

您现在位置:Python中文网/ 问答频道 /正文

有人能解释一下守护进程模式下的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的优点:

  • 我们不需要阿帕奇
  • 我们消耗更少的内存
  • 我注意到fastcgi的开销较小

更新3:

我现在对nginx+uwsgi很满意。

更新4:

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


Tags: djangopymodwsgimanage进程apache模式
1条回答
网友
1楼 · 发布于 2024-04-24 12:32:07

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

有关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托管机制更多的功能和可配置性。

不管怎样,这个问题有点模糊,你能更具体地说明你想知道什么,或者两者之间的对比以及为什么?答案也许会更有针对性。

相关问题 更多 >