【问题标题】:is apache necessary while we have python's built-in SimpleHttpServer当我们有 python 的内置 SimpleHttpServer 时是否需要 apache
【发布时间】:2012-03-14 00:16:22
【问题描述】:

我是 python web 开发世界的新手,有点困惑为什么我们需要一个 apache 环境,而我们可以运行带有内置 http sever 的 python web 应用程序?此外,根据我的经验,我可以运行 django 应用程序而无需设置任何其他内容。那为什么我们还需要 apache + mod_wsgi?为了性能?

实际上真正让我感到困惑的是......我的代码入口点应该如何编写?例如我听说还有其他高级的“网络服务器”,比如cherrypy/Tornado,它们中的每一个都需要不同的入口点代码。所以我想知道 apache(+ mod_wsgi) 是否与其他 Web 框架不重叠(我在上面称它们为 Web 服务器)? (在大多数情况下)我们应该在生产中使用 apache,但将其他人用作“插件”?谢谢

【问题讨论】:

    标签: python django apache webserver mod-wsgi


    【解决方案1】:

    如今,标准入口点是 WSGI 应用程序对象。很好,一切都支持它。每个 Web 框架如何公开一个,以及如何设置每个 WSGI 托管机制以使用它是不同的。但在核心,Web 服务器和应用程序之间的实际接口是相同的。

    【讨论】:

      【解决方案2】:

      是的,一般来说,您需要这些以提高性能。

      如果你想避免设置 Apache 的复杂性,直到你真的不得不这样做(如果你时间紧迫和/或缺乏经验,这可能是合理的)你可能会更好地使用 CherryPy 来为 Django 服务。它有一个全 Python Web 服务器,性能比内置的要好得多。

      您可以找到有关该 here 的说明。

      【讨论】:

      • 用更好的问题更新了原帖,你能看看吗?谢谢
      【解决方案3】:

      性能和可扩展性将是在生产中使用 Apache 的原因。不过,SimpleHTTPServer 非常适合测试和内部使用。

      【讨论】:

        【解决方案4】:

        性能、稳定性、可扩展性、安全性……

        内置的 HTTP 服务器对于简单的测试或在您的开发机器上快速运行 Web 应用程序很有用,但它的可扩展性不如 Apache 服务器。内置的安全性也可能不那么坚固。

        此外,Apache 允许您处理许多额外的事情,例如虚拟主机、多种服务器端平台(例如,Ruby on Rails 应用程序和 Django 应用程序在同一端口/IP 上),这些都更难处理使用内置服务器实现。

        【讨论】:

        • 用更好的问题更新了原帖,你能看看吗?谢谢
        • 很抱歉我没有使用 Python 中的 Web 框架的经验,所以我不知道它们是如何托管的。我怀疑 Django 有某种入口点协议(即,根据网络服务器收到的请求调用某个函数)。所有托管 Django 应用程序的 Web 服务器都必须将请求转换为相应的方法调用。或者也许 Django 自己会这样做,在这种情况下,请求只会被转发给 Django。我无法想象每个服务器如何有自己的方式进入 Django 世界?
        【解决方案5】:

        Apache 比 python SimpleHTTPServer 好得多。

        一方面,SimpleHttpServer 是单线程的,但 apache 可以轻松处理多个线程。 Apache 还可以通过 SimpleHttpServer 无法做到的许多方式进行配置。 Apache 有一个易于使用的请求日志记录,有助于调试和日志记录。

        【讨论】:

        • 问题是,其实为什么更好?
        • 用更好的问题更新了原帖,你能看看吗?谢谢
        猜你喜欢
        • 2020-10-13
        • 2022-11-14
        • 2019-01-26
        • 2015-03-01
        • 2012-07-12
        • 2020-08-22
        • 2020-07-11
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多