CherryPy教程

CherryPy 内置引擎

CherryPy 带有自己的 Web (HTTP) 服务器。这就是为什么 CherryPy 是自包含的,并允许用户在获得库的几分钟内运行 CherryPy 应用程序。
网络服务器充当应用程序的网关,所有请求和响应都在它的帮助下进行跟踪。
要启动 Web 服务器,用户必须进行以下调用-
cherryPy.server.quickstart()
CherryPy 的内部引擎负责以下活动-
创建和管理请求和响应对象。 控制和管理 CherryPy 流程。

CherryPy – 配置

该框架带有自己的配置系统,允许您参数化 HTTP 服务器。配置的设置可以存储在语法接近 INI 格式的文本文件中,也可以存储为完整的 Python 字典。
要配置 CherryPy 服务器实例,开发者需要使用设置的全局部分。
global_conf = {
   'global': {
      'server.socket_host': 'localhost',
      'server.socket_port': 8080,
   },
}
application_conf = {
   '/style.css': {
      'tools.staticfile.on': true,
      'tools.staticfile.filename': os.path.join(_curdir, 'style.css'),
   }
}
this could be represented in a file like this:
[global]
server.socket_host = "localhost"
server.socket_port = 8080
[/style.css]
tools.staticfile.on = true
tools.staticfile.filename = "/full/path/to.style.css"

HTTP 合规性

CherryPy 发展缓慢,但它包括了 HTTP/1.0 支持下的 HTTP 规范的编译,后来在 HTTP/1.1 的支持下转移。
CherryPy 据说有条件地符合 HTTP/1.1,因为它实现了规范的所有必须和要求的级别,但不是所有的应该级别。因此,CherryPy 支持 HTTP/1.1 的以下特性-
如果客户端声称支持 HTTP/1.1,它必须在使用指定协议版本发出的任何请求中发送标头字段。如果没有完成,CherryPy 将立即停止处理请求。 CherryPy 生成用于所有配置的 Date 标头字段。 CherryPy 可以在客户端的支持下处理响应状态代码 (100)。 CherryPy 的内置 HTTP 服务器支持 HTTP/1.1 中默认的持久连接,通过 t使用 Connection: Keep-Alive 标头。 CherryPy 正确处理分块的请求和响应。 CherryPy 以两种不同的方式支持请求-If-Modified-Since 和 If-Unmodified-Since 标头,并根据请求相应地发送响应。 CherryPy 允许任何 HTTP 方法。 CherryPy 处理客户端和服务器设置集之间的 HTTP 版本组合。

多线程应用服务器

CherryPy 是基于多线程概念设计的。开发人员每次在 CherryPy 命名空间中获取或设置值,都是在多线程环境中完成的。
cherrypy.request 和cherrypy.response 都是线程数据容器,这意味着您的应用程序通过知道在运行时通过它们代理哪个请求来独立调用它们。
使用线程模式的应用服务器不被高度重视,因为线程的使用被视为增加了由于同步要求而出现问题的可能性。
其他选择包括-

多进程模式

每个请求都由它自己的 Python 进程处理。在这里,可以认为服务器的性能和稳定性更好。

异步模式

在这里,接受新连接并将数据发送回客户端是从请求过程异步完成的。这种技术以其效率而著称。

网址调度

CherryPy 社区希望更加灵活,希望调度员使用其他解决方案。 CherryPy 3 提供了其他内置调度程序,并提供了一种编写和使用您自己的调度程序的简单方法。
用于开发 HTTP 方法的应用程序。 (GET、POST、PUT 等) 定义 URL 中路由的那个-Routes Dispatcher

HTTP 方法调度器

在某些应用程序中,URI 独立于服务器对资源执行的操作。
例如, http://xyz.com/album/delete/10
URI 包含客户端希望执行的操作。
默认情况下,CherryPy 调度程序将按以下方式映射-
album.delete(12)
上面提到的调度器是正确提到的,但可以通过以下方式独立-
http://xyz.com/album/10
用户可能想知道服务器如何分派确切的页面。该信息由 HTTP 请求本身携带。当客户端向服务器发出请求时,CherryPy 看起来是最适合的处理程序,处理程序是 URI 所针对的资源的表示。
DELETE /album/12 HTTP/1.1

路由调度器

这是调度所需方法的参数列表-
name 参数是要连接的路由的唯一名称。 路由是匹配 URI 的模式。 控制器是包含页面处理程序的实例。 使用 Routes 调度程序连接匹配 URI 并关联特定页面处理程序的模式。

示例

让我们举个例子来了解它是如何工作的-
import random
import string
import cherrypy
class StringMaker(object):
   @cherrypy.expose
   def index(self):
      return "Hello! How are you?"
   
   @cherrypy.expose
   def generate(self, length=9):
      return ''.join(random.sample(string.hexdigits, int(length)))
		
if __name__ == '__main__':
   cherrypy.quickstart(StringMaker ())
按照下面给出的步骤得到上面代码的输出-
步骤 1-将上述文件另存为 tutRoutes.py
第 2 步-访问以下 URL-
http://localhost:8080/generate?length=10
步骤 3-您将收到以下输出-
Routes Dispatcher
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4