如何select一个Python应用程序的Web服务器?

信息和先决条件:

我有一个项目,其核心是一个基本的CRUD应用程序。 它没有长时间运行的后台进程,一开始就会分叉,后面会谈,也没有长时间运行的查询或连接请求。 它接收到一个请求,对数据库进行一些查询,然后作出响应。

为了快速提供静态文件和可擦写文件,我将在所有情况下使用Varnish。

这是我的问题:

在阅读了各种Python Web应用程序服务器之后,我看到他们都有自己的“粉丝”,通常是“个人”的理由,这让我感到困惑,因为每个用例都与下一个不同。

  • 我如何才能了解Python Web服务器的核心区别因素(按顺序)来决定它们对于我的项目来说是多么适合,哪一个会比另一个更好?

  • 你在这个问题上有什么(技术上可certificate的)想法?

  • 我应该如何select一个Python Web服务器?

谢谢。

部分业务人员正在成为服务器configuration为您工作的“粉丝”。

对于一个简单的应用程序,它确实不重要,但是你会发现部署和维护对于这个或那个服务器来说更好。 也许你的Linux发行版有更好的apache包。 也许这对nginx更好。 也许你不能使configuration工作的Apache。 也许你不能让它为nginx工作。

如果你正在寻找一个简单的“这个服务器是最重要的”答案,这是不会发生的。 他们都可以configuration工作得很好或者很差,任何在这个行业工作过的人都看到了,并且形成了强烈的意见。

这就是说,我倾向于坚持与Apache。 Nginx是一个热门人物,所以跳上这个决定并不是一个坏的决定,但是Apache仍然是黄金标准。

您可以做的最好的事情是确保您的Python Web应用程序符合WSGI规范(PEP 333/3333)。 不要让你的应用程序依赖于WSGI规范之外的特定Python Web服务器的特定function。 通过这样做,您将确保Web服务器不是一个关键组件,您将永远不会被绑定到一个特定的Web服务器。 如果您对Web服务器的要求发生变化,这将使您可以灵活地将整个Web应用程序或其部分内容迁移到不同的WSGI服务器。

还要确保您的Web应用程序可以在multithreading和多进程部署环境中工作,并确保您不会以某种方式使您的代码依赖于使用并行处理并行请求的协同程序。 这也是为了确保您可以根据需要灵活地在WSGI服务器之间移动。

最后,不要认为你必须使用相同的技术为你的整个Web应用程序。 只是因为你的应用程序的一个URL需要处理长轮询风格的请求并不认为你需要重新实现你的整个Web应用程序作为一个asynchronous应用程序。 考虑垂直分区您的Web应用程序,并将具有特殊要求(如asynchronous)的特定url的子集移动到单独的服务器,并使用WSGI更容易的方式用于Web应用程序的大部分。 为了将Web应用程序的所有不同组件都带到一个主机下,可以使用nginx前端代理不同的后端,asynchronous和WSGI等。

换句话说,总是保持你的select开放,不要通过购买特定的非标准技术来限制自己。 尽可能地尝试并坚持使用WSGI,因为它将给您提供最大的灵活性,就WSGI服务器select和PaaS托pipe而言。