CherryPy

CherryPy是一个面向对象的web应用框架，使用了Python编程语言。它设计用于web应用的快速开发，通过包裹HTTP协议，但停留在低层而不提供超出RFC 7231所定义的东西。

CherryPy自身可以是个web服务器，也可以通过任何WSGI兼容环境来启动它。它不处置用于输出呈现的模板或后端访问的任务。这个框架可以采用过滤器来扩展，它被调用于请求/响应处理的确定点上。

Python化接口
这个项目创立者的目标之一，是使得CherryPy尽可能的体现Python原则。这允许开发者将这个框架同任何正规Python模块一样的使用，而忘记（从技术的角度）这个应用是用于web。

例如，常见的Hello World程序用CherryPy 3将写为如下：

import cherrypy

class HelloWorld:
    def index(self):
        return "Hello World!"
    index.exposed = True

cherrypy.quickstart(HelloWorld())

特征
CherryPy实现了：
 遵循HTTP/1.1、WSGI的线程池的webserver。典型的，CherryPy自身每页只用1–2ms。
 支持任何任何其他启用WSGI的web服务器或适配器，包括Apache、IIS、lighttpd、、FastCGI、SCGI和。
 一个原生的适配器。
 多个HTTP服务器（就是有能力监听多个端口）。
 一个插件系统，CherryPy插件挂钩到在服务器进程内的事件，服务器启动、服务器关闭、服务器退出等，用来执行在服务器启动和关闭时需要运行的代码。
 内建工具用于缓存、编码、会话、授权、静态内容和其他。CherryPy工具挂钩到在请求处理内的事件。在CherryPy服务器收到一个请求的时候，它有一组特定的步骤要履行来处理这个请求。页面处理器只是这个处理的步骤之一。工具还提供语法和配置API来为特定集合的处理器而打开和关闭它们。
 给开发者和部署者的一个配置系统。CherryPy部署可配置于站点上、应用上和在控制器层面上，通过Python字典、配置文件和打开文件对象。
 一个完全的测试套件用于核心功能和有关框架，可以用来测试CherryPy应用。
 内建剖析自从v2.1、覆盖和测试支持。

CherryPy不强制使用特定对象关系映射器（ORM）、或JavaScript库。

可用于CherryPy的模块
 Routes，一个Ruby on Rails的路由系统的Python重新实现，用于映射URL到控制器/行动和生成URL。

对象关系映射器
 SQLAlchemy，用于Python应用的一个数据库后端和ORM。
 SQLObject，一个流行的ORM用于提供到数据库的对象接口。支持很多常见数据库后端：包括在发行中的有MySQL、PostgreSQL、SQLite、Sybase SQL Server、MaxDB、Microsoft SQL Server和Firebird。
 ，Canonical公司的ORM。
 MongoEngine，用于连接到MongoDB的ODM。

模板语言
 Mako，用Python写的模板库，可用于简单的CherryPy工具。
 ，开源和代码生成工具，用Python写成。
 CherryTemplate，CherryPy的模板语言。
 ，强力的XML模板引擎。
 Jinja，通用模板语言。CherryPy拥有使用Jinja模板的一个工具。
 ，一个简单的模板语言，用于基于XML的用Python写的词汇表。

参见
 各網頁框架系統的比較

引用

外部链接

Python库
web应用框架
使用BSD许可证的软件