CherryPy
开发者 | CherryPy team |
---|---|
首次发布 | 2002年6月[1] |
当前版本 |
|
源代码库 | CherryPy Repository |
编程语言 | Python |
操作系统 | 跨平台 |
类型 | Web应用框架 |
许可协议 | BSD许可证[3] |
网站 | cherrypy |
CherryPy是一个面向对象的web应用框架,使用了Python编程语言。它设计用于web应用的快速开发,通过包裹HTTP协议,但停留在低层而不提供超出RFC 7231所定义的东西。
CherryPy自身可以是个web服务器,也可以通过任何WSGI兼容环境来启动它。它不处置用于输出呈现的模板或后端访问的任务。这个框架可以采用过滤器来扩展,它被调用于请求/响应处理的确定点上。
Python化接口
这个项目创立者Remi Delon的目标之一,是使得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[4]。典型的,CherryPy自身每页只用1–2ms[5][6]。
- 支持任何任何其他启用WSGI的web服务器或适配器,包括Apache、IIS、lighttpd、mod_python、FastCGI、SCGI和mod_wsgi。
- 一个原生的mod_python适配器。
- 多个HTTP服务器(就是有能力监听多个端口)[7]。
- 一个插件系统[8],CherryPy插件挂钩到在服务器进程内的事件,服务器启动、服务器关闭、服务器退出等,用来执行在服务器启动和关闭时需要运行的代码。
- 内建工具用于缓存、编码、会话、授权、静态内容和其他。CherryPy工具挂钩到在请求处理内的事件。在CherryPy服务器收到一个请求的时候,它有一组特定的步骤要履行来处理这个请求。页面处理器只是这个处理的步骤之一。工具还提供语法和配置API来为特定集合的处理器而打开和关闭它们。
- 给开发者和部署者的一个配置系统[9][10][11]。CherryPy部署可配置于站点上、应用上和在控制器层面上,通过Python字典、配置文件和打开文件对象。
- 一个完全的测试套件用于核心功能和有关框架,可以用来测试CherryPy应用[12]。
- 内建剖析自从v2.1[13]、覆盖[14]和测试支持。
CherryPy不强制使用特定对象关系映射器(ORM)、模板语言或JavaScript库。
可用于CherryPy的模块
- Routes,一个Ruby on Rails的路由系统的Python重新实现,用于映射URL到控制器/行动和生成URL[15]。
对象关系映射器
- SQLAlchemy,用于Python应用的一个数据库后端和ORM。
- SQLObject,一个流行的ORM用于提供到数据库的对象接口。支持很多常见数据库后端:包括在发行中的有MySQL、PostgreSQL、SQLite、Sybase SQL Server、MaxDB、Microsoft SQL Server和Firebird。
- Storm,Canonical公司的ORM。
- MongoEngine,用于连接到MongoDB的ODM[16]。
模板语言
- Mako[17],用Python写的模板库,可用于简单的CherryPy工具[18]。
- Cheetah,开源模板引擎和代码生成工具,用Python写成。
- CherryTemplate,CherryPy的模板语言。
- Genshi[19][20],强力的XML模板引擎。
- Jinja,通用模板语言。CherryPy拥有使用Jinja模板的一个工具[21]。
- Kid,一个简单的模板语言,用于基于XML的用Python写的词汇表。
参见
引用
- ^ History of CherryPy. [2021-03-12]. (原始内容存档于2018-12-15).
- ^ Release v18.8.0. 2022年7月18日 [2022年7月18日].
- ^ cherrypy / CherryPy / source / cherrypy / LICENSE.txt. BitBucket. [2015-02-21]. (原始内容存档于2017-07-15).
- ^ 存档副本. [2021-03-12]. (原始内容存档于2021-05-14).
- ^ CherryPy v3 WSGI server benchmark results. [2009-09-23]. (原始内容存档于2016-03-03).
- ^ How fast is CherryPy? 互联网档案馆的存档,存档日期2010-02-10.
- ^ How to set up multiple HTTP servers with CherryPy. [2009-09-23]. (原始内容存档于2016-03-03).
- ^ Custom engine plugins with CherryPy 互联网档案馆的存档,存档日期2009-05-03.
- ^ Configuration system of CherryPy 互联网档案馆的存档,存档日期2009-06-26.
- ^ Configuration API of CherryPy 互联网档案馆的存档,存档日期2009-07-01.
- ^ Short summary of configuration options. [2021-03-12]. (原始内容存档于2010-08-18).
- ^ How to test CherryPy itself 互联网档案馆的存档,存档日期2009-09-27.
- ^ Profiler module of CherryPy 互联网档案馆的存档,存档日期2010-02-09.
- ^ How to collect and the analyse coverage data of application code with CherryPy. [2009-09-23]. (原始内容存档于2015-11-17).
- ^ Routes Documentation. [2021-03-13]. (原始内容存档于2019-11-28).
- ^ mongoengine.org. [2021-03-13]. (原始内容存档于2021-01-17).
- ^ Mako Templates for Python. [2021-03-12]. (原始内容存档于2021-05-11).
- ^ A simple CherryPy tool for Mako templating. [2009-09-21]. (原始内容存档于2016-03-03).
- ^ CherryPy – Genshi. [2009-09-26]. (原始内容存档于2012-07-04).
- ^ Genshi - CherryPy Tools - Trac. [2009-09-26]. (原始内容存档于2012-02-27).
- ^ A basic CherryPy Tool for using Jinja templates. [2009-09-23]. (原始内容存档于2015-09-05).