使用FastCGI或mod_python运行Django

20 投票
7 回答
5300 浏览
提问于 2025-04-11 09:31

你推荐哪个呢?哪个更快、更可靠?是Apache的mod_python,还是nginx/lighttpd的FastCGI?

7 个回答

5

Nginx和mod_wsgi的结合

6

使用lighttpd配合FastCGI,理论上会快一点,但实际上,运行你的Python代码和数据库操作所花的时间,远远超过了不同网页服务器之间的性能差异。

如果你想在django之外写一些代码,比如处理消化认证或者设置一些复杂的HTTP头,mod_python和apache会给你更多的灵活性。也许你还想用apache的一些内置功能,比如mod_rewrite。

如果你担心内存问题,尽量避免使用apache和mod_python会有很大帮助。因为apache通常会占用很多内存,而mod_python代码也会占用不少内存空间。此外,apache是多进程的,每个进程会根据最耗资源的请求来增长,这样也会消耗更多的内存。

21

我之前用过这两种方式,发现Apache/mod_python更容易上手,也更稳定。不过现在我转向了Apache/mod_wsgi,这个东西真的是我一直想要的,甚至更多:

  • 管理后台进程很简单。
  • 因此,隔离性好得多(在同一个Apache配置下用mod_python运行多个网站,几乎总是会出问题——环境变量和C扩展会在网站之间互相影响)。
  • 代码重载很方便(只要设置得当,你可以简单地修改一下.wsgi文件来重载,而不需要重启Apache)。
  • 资源使用更可预测。用mod_python时,Apache的子进程内存使用情况可能会波动很大。而用mod_wsgi就比较稳定:一旦所有东西加载完毕,你就知道它会用多少内存。

撰写回答