简介
在本文中,我们将讨论三个主要内容:Python、Web 服务器,以及两者之间最重要的细节。
开玩笑的话,这篇相当长的文章对于一些寻求快速指导或答案的人来说可能看起来有些严肃。不幸的是,与 Python 世界中的大多数事物不同的是,当选择一个用于部署应用程序的生产服务器堆栈时,并没有一种——最好只有一种——明显的方法。
然而,这不应该吓到你。完成本文后,您将对不同的 Web 服务器如何工作以及如何处理与基于 Python 的 Web 应用程序交互的任务有很好的了解。在评估您的需求和要求后,您将能够决定使用哪个服务器。
Python Web 服务器网关接口 v1.0 (WSGI)
理解问题
如今,存在着越来越多专门设计(或适应)与 Python Web 应用程序可互换工作的 Web 服务器(或服务器模块)。然而,这并不总是这样。在古老的日子里,开发人员并没有真正的可能随意切换 Web 服务器,并且每次切换都会因依赖关系和限制而带来成本。在决定构建的框架时,您也将决定(并非总是情愿或有意识地)可以用来提供应用程序的服务器。这是由于缺乏一个被普遍接受的接口规范的存在:应用程序(框架)和 Web 服务器一样会适应并使用它来进行通信,从而允许在必要时以可能的零代码更改进行组件的互换。
标准的诞生
在本世纪初,人们努力解决这个问题,并向社区提出了 Python 增强提案(PEP)333。
来自 PEP(Python 增强提案)333:
本文档规定了 Web 服务器和 Python Web 应用程序或框架之间的一个提议的标准接口,以促进 Web 应用程序在各种 Web 服务器之间的可移植性。
正如 PEP 中所解释的那样,这个新标准旨在允许(和之间)[Web] 服务器和 [Python Web] 应用程序之间的可移植性。该标准强大的功能及其与以前的标准相比的广泛采用为今天铺平了道路:存在许多(也许太多)愿意为您完成工作的 Web 服务器的世界。
比较
在这个针对基于 Python 的 Web 应用程序的 Web 服务器比较中,我们将讨论一些可用的选择以及它们的特点。这