代码之家  ›  专栏  ›  技术社区  ›  daniels

使用fastcgi或mod_python运行django

  •  20
  • daniels  · 技术社区  · 16 年前

    你会推荐哪一个? 哪个更快、可靠? Apache mod_python还是nginx/lighttpd fastcgi?

    7 回复  |  直到 16 年前
        1
  •  21
  •   James Bennett    16 年前

    我都做过,Apache/mod_python更容易使用,更稳定。但这些天,我跳到了Apache/Mod wsgi,这是我想要的一切,还有更多:

    • 易于管理守护进程。
    • 因此, 许多的 更好的进程隔离(使用mod_python在同一个apache配置中运行多个站点几乎总是以麻烦告终——当您这样做时,环境变量和C扩展会跨站点泄漏)。
    • 简单的代码重新加载(设置正确,您只需触摸 .wsgi 要重新加载的文件,而不是重新启动Apache)。
    • 更可预测的资源使用。有了mod_python,给定的apache子进程的内存使用可以跳跃很多。有了mod_wsgi,它就相当稳定了:一旦加载了所有内容,就知道它将使用多少内存。
        2
  •  6
  •   bmdhacks    16 年前

    带fastcgi的lighttpd名义上会更快,但实际上运行python代码所需的时间和它所做的任何数据库命中都将使您在Web服务器之间获得的任何性能优势相形见绌。

    如果您想在Django之外编写代码,比如Digest-Auth或任何奇特的HTTP头获取/设置,那么mod ou python和apache将为您提供更大的灵活性。也许您希望使用Apache的其他内置功能,如mod_rewrite。

    如果担心内存问题,那么远离apache/mod_python将有很大帮助。Apache倾向于使用大量的RAM,而粘在所有Apache功能中的mod_python代码也占用了大量的内存空间。更不用说Apache的多进程特性会占用更多的RAM,因为每个进程都会增长到最密集的请求的大小。

        3
  •  5
  •   Lucky    16 年前

    带mod_wsgi的nginx

        4
  •  2
  •   Javier    16 年前

    我在使用nginx。不确定它是否真的更快,但肯定更少的RAM/CPU负载。此外,运行几个django进程并让nginx将每个URL前缀映射到不同的套接字也更容易。仍然没有充分利用nginx的memcached模块,但是第一次测试显示 巨大的 速度优势。

        5
  •  2
  •   Urkonn    16 年前

    还有mod_wsgi,它看起来比mod_python快,守护进程模式的运行类似于fastcgi。

        6
  •  2
  •   Jon Cage    16 年前

    就我个人而言,我已经和FastCGI合作了一段时间(大约6个月左右),当用这种方式加载页面时,响应时间“似乎”比用mod_uuuupython更快。但对我来说,关键的原因是我看不到一个明显的方法来从同一个apache/mod_python安装中执行多个站点,而fastcgi相对来说是一个简单的方法。

    不过,我没有做过任何特别彻底的实验。

    [编辑] 不过,从经验来看,第一次建立fastcgi可能有点痛苦。我一直想写一本指南。

        7
  •  2
  •   dan mackinlay    16 年前

    我建议使用wsgi配置;我一直想放弃Apache,但是服务器上总是有一些遗留的应用程序需要它。此外,wsgi应用程序生态非常多样,它允许在服务器和应用程序之间使用菊花链等巧妙的技巧来连接wsgi“中间件”。

    但是,目前 known issues with some apps and apache mod_wsgi 尤其是一些ctypes应用程序,所以如果你想运行,要小心,比如, geodjango 它广泛使用ctypes。我现在通过自己回到FastCGI来解决这些问题。