技术开发 频道

CherryPy入门之Web服务器篇

  【IT168 技术】近几年来,Web应用程序以指数方式增长,同时也催生了大量的工具包、程序库和框架以帮助使用不同编程语言的Web开发人员来简化他们的开发任务。CherryPy是一种为Python开发人员准备的Web应用程序开发框架,通俗点说,就是一个Python程序库,它为Python开发人员提供了友好的HTTP协议接口。大家知道,HTTP可是万维网的支柱协议,而CherryPy将HTTP协议简化成Python API来供Python 开发人员使用,这极大地简化了Web开发人员对HTTP协议的操作。本文将对CherryPy内建的web服务器做深入的介绍。

  一、CherryPy有关的基本概念

  我们常说,CherryPy是一种Web应用程序服务器。为了讲解这句话,我们需要先弄清楚几个基本的概念:Web服务器、应用程序、应用程序服务器和Web应用程序服务器。下面对这些概念分别加以解释。

  我们首先介绍Web服务器。所谓Web服务器,就是处理HTTP协议的接口一个软件,它将收到的HTTP请求传给应用服务器,并把应用服务器返回的信息转换成HTTP响应。

  那什么是应用程序和应用程序服务器呢?所谓应用程序是这样一个软件,它取得一段信息,按照商业逻辑进行相应的处理,并返回处理后的信息。而应用程序服务器则是托管一个或多个应用程序的组件。

  最后,我们介绍Web应用程序服务器。所谓Web应用程序服务器,只不过是融合了Web服务器和应用服务器的单个组件。从下面开始,我们介绍CherryPy内建的Web服务器。

  二、CherryPy内置的Web服务器

  CherryPy自身内置了一个HTTP服务器,或者称为Web服务器。这样,对于CherryPy的用户来说,不用另外搭设Web服务器就能直接运行CherryPy应用程序了。实际上,Web服务器是到达CherryPy应用程序的关口,是所有的HTTP请求和响应的必经之地。因此,可以这样理解CherryPy内建的Web服务器:它是位于处理客户端与服务器端之间的一层软件,用于把底层TCP套按字传输的信息转换成Http请求,并传递给相应的处理程序;同时,还把上层软件传来的信息打包成Http响应,并向下传递给底层的TCP套按字。

  为了启用内置的Web服务器,必须使用下列代码:

  cherrypy.server.quickstart()

  虽然CherryPy提供了内置的Web服务器,但是这并不是说只能使用其内置服务器,相反,如果需要的话,CherryPy也可以使用其他Web服务器。

  三、CherryPy支持的HTTP版本

  CherryPy经过不断的发展,现在已经能兼容几乎所有的HTTP规范:从最初支持的HTTP/1.0到HTTP/1.1。 对于HTTP/1.1,CherryPy兼容它的大部分所需特性,但是并非与其规范完全兼容。具体而言,CherryPy支持HTTP/1.1以下的特性:

  1. CherryPy允许所有的HTTP方法。

  2. CherryPy能正确处理大块的请求和响应。

  3. 如果客户端声称支持HTTP/1.1,它必须在所有用该版本的协议制作的请求中包含Host报头字段;否则,CherryPy将立即终止该请求的处理,并发送400错误代码消息。

  4. CherryPy会在所有配置中生成一个Date头域。

  5. CherryPy支持设置了If-Modified-Since和If-Unmodified-Since头部的请求,并能进行适当地响应。

  6. CherryPy在支持HTTP 1.1客户端上处理Continue响应状态码(100)。该状态代码表示临时的响应。我们知道,客户端在收到常规响应之前,应准备接收一个或多个 1xx 响应。100表示初始的请求已经接受,客户应当继续发送请求的其余部分。

  7. CherryPy的内置HTTP服务器支持在HTTP/1.1中默认的持久连接,方法是使用Connection: Keep-Alive 头。此外,如果所选择的服务器不支持这种功能的话,更改HTTP服务器可以取消这个兼容性。

  8. CherryPy能够支持客户端和服务器之间的所有HTTP版本组合。

  总的说来,由于支持HTTP/1.1,CherryPy 3提供了大量功能,因此可以是在各种情形下安心的使用。

0
相关文章