CherryPy

CherryPy
開發者CherryPy team
首次发布2002年6月,​21年前​(2002-06[1]
当前版本
  • 18.8.0 (2022年7月18日;穩定版本)[2]
編輯維基數據鏈接
源代码库CherryPy Repository
编程语言Python
操作系统跨平台
类型Web应用框架
许可协议BSD许可证[3]
网站cherrypy.org

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

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

Python化接口

这个项目创立者Remi Delon英语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服务器或适配器,包括ApacheIISlighttpdmod_python英语mod_pythonFastCGISCGImod_wsgi英语mod_wsgi
  • 一个原生的mod_python英语mod_python适配器。
  • 多个HTTP服务器(就是有能力监听多个端口)[7]
  • 一个插件系统[8],CherryPy插件挂钩到在服务器进程内的事件,服务器启动、服务器关闭、服务器退出等,用来执行在服务器启动和关闭时需要运行的代码。
  • 内建工具用于缓存编码、会话、授权、静态内容和其他。CherryPy工具挂钩到在请求处理内的事件。在CherryPy服务器收到一个请求的时候,它有一组特定的步骤要履行来处理这个请求。页面处理器只是这个处理的步骤之一。工具还提供语法和配置API来为特定集合的处理器而打开和关闭它们。
  • 给开发者和部署者的一个配置系统[9][10][11]。CherryPy部署可配置于站点上、应用上和在控制器层面上,通过Python字典、配置文件和打开文件对象。
  • 一个完全的测试套件用于核心功能和有关框架,可以用来测试CherryPy应用[12]
  • 内建剖析自从v2.1[13]覆盖[14]和测试支持。

CherryPy不强制使用特定对象关系映射器(ORM)、模板语言英语Web template systemJavaScript库

可用于CherryPy的模块

  • Routes,一个Ruby on Rails的路由系统的Python重新实现,用于映射URL到控制器/行动和生成URL[15]

对象关系映射器

模板语言

  • Mako[17],用Python写的模板库,可用于简单的CherryPy工具[18]
  • Cheetah英语CheetahTemplate,开源模板引擎英语Web template system和代码生成工具,用Python写成。
  • CherryTemplate,CherryPy的模板语言。
  • Genshi英语Genshi (templating language)[19][20],强力的XML模板引擎。
  • Jinja,通用模板语言。CherryPy拥有使用Jinja模板的一个工具[21]
  • Kid英语Kid (templating language),一个简单的模板语言,用于基于XML的用Python写的词汇表。

参见

引用

  1. ^ History of CherryPy. [2021-03-12]. (原始内容存档于2018-12-15). 
  2. ^ Release v18.8.0. 2022年7月18日 [2022年7月18日]. 
  3. ^ cherrypy / CherryPy / source / cherrypy / LICENSE.txt. BitBucket. [2015-02-21]. (原始内容存档于2017-07-15). 
  4. ^ 存档副本. [2021-03-12]. (原始内容存档于2021-05-14). 
  5. ^ CherryPy v3 WSGI server benchmark results. [2009-09-23]. (原始内容存档于2016-03-03). 
  6. ^ How fast is CherryPy? 互联网档案馆的存檔,存档日期2010-02-10.
  7. ^ How to set up multiple HTTP servers with CherryPy. [2009-09-23]. (原始内容存档于2016-03-03). 
  8. ^ Custom engine plugins with CherryPy 互联网档案馆的存檔,存档日期2009-05-03.
  9. ^ Configuration system of CherryPy 互联网档案馆的存檔,存档日期2009-06-26.
  10. ^ Configuration API of CherryPy 互联网档案馆的存檔,存档日期2009-07-01.
  11. ^ Short summary of configuration options. [2021-03-12]. (原始内容存档于2010-08-18). 
  12. ^ How to test CherryPy itself 互联网档案馆的存檔,存档日期2009-09-27.
  13. ^ Profiler module of CherryPy 互联网档案馆的存檔,存档日期2010-02-09.
  14. ^ How to collect and the analyse coverage data of application code with CherryPy. [2009-09-23]. (原始内容存档于2015-11-17). 
  15. ^ Routes Documentation. [2021-03-13]. (原始内容存档于2019-11-28). 
  16. ^ mongoengine.org. [2021-03-13]. (原始内容存档于2021-01-17). 
  17. ^ Mako Templates for Python. [2021-03-12]. (原始内容存档于2021-05-11). 
  18. ^ A simple CherryPy tool for Mako templating. [2009-09-21]. (原始内容存档于2016-03-03). 
  19. ^ CherryPy – Genshi. [2009-09-26]. (原始内容存档于2012-07-04). 
  20. ^ Genshi - CherryPy Tools - Trac. [2009-09-26]. (原始内容存档于2012-02-27). 
  21. ^ A basic CherryPy Tool for using Jinja templates. [2009-09-23]. (原始内容存档于2015-09-05). 

外部链接

  • 官方网站 在维基数据上编辑此内容
C++
  • CppCMS英语CppCMS
  • Wt英语Wt (web toolkit)
CLI
  • ASP.NET
    • Core
    • AJAX
    • 动态数据英语ASP.NET Dynamic Data
    • MVC
    • Razor英语ASP.NET Razor
    • Web Forms
  • DNN英语DotNetNuke
  • BFC英语Base One Foundation Component Library
  • MonoRail英语MonoRail (software)
  • OpenRasta英语OpenRasta
  • Umbraco
ColdFusion
  • CFWheels
  • ColdBox Platform英语ColdBox Platform
  • ColdSpring英语ColdSpring Framework
  • Fusebox英语Fusebox (programming)
  • Mach-II英语Mach-II
  • Model-Glue英语Model-Glue
Common Lisp
  • Caveman2英语Caveman2
  • CL-HTTP英语CL-HTTP
  • UnCommon Web英语UnCommon Web
  • Weblocks
D
  • Vibe.d英语Vibe.d
Haskell
  • Happstack英语Happstack
  • Yesod英语Yesod (web framework)
  • Snap英语Snap (web framework)
Java
  • AppFuse英语AppFuse
  • Flexive英语Flexive
  • Grails英语Grails (framework)
  • GWT
  • ICEfaces英语ICEfaces
  • ItsNat英语ItsNat
  • JavaServer Faces
  • JHipster英语JHipster
  • Jspx英语Jspx-bay
  • JWt英语JWt (Java web toolkit)
  • OpenXava英语OpenXava
  • Play
  • Reasonable Server Faces英语Reasonable Server Faces
  • Remote Application Platform英语Remote Application Platform
  • RIFE英语RIFE
  • Seam英语JBoss Seam
  • Spring
  • Stripes英语Stripes (framework)
  • Struts
  • Tapestry
  • Vaadin英语Vaadin
  • Vert.x
  • WebWork英语WebWork
  • Wicket
  • WaveMaker英语WaveMaker
  • ZK
JavaScript
  • Ample SDK英语Ample SDK
  • Angular英语Angular (application platform)/AngularJS
  • Backbone.js
  • Chaplin.js英语Chaplin.js
  • Closure英语Google Closure Tools
  • Dojo Toolkit
  • Ember.js
  • Extjs
  • JQuery
  • Meteor英语Meteor (web framework)
  • MooTools英语MooTools
  • Node.js
  • Prototype
  • React
  • Rico
  • script.aculo.us英语script.aculo.us
  • Sencha Touch英语Sencha Touch
  • SproutCore英语SproutCore
  • Vue.js
  • Wakanda英语Wakanda (software)
Perl
  • Catalyst
  • Dancer英语Dancer (software)
  • Mason英语Mason (Perl)
  • Maypole
  • Mojolicious英语Mojolicious
  • WebGUI
PHP
  • CakePHP英语CakePHP
  • CodeIgniter
  • Fat-Free
  • FuelPHP
  • Gyroscope英语Gyroscope (software)
  • Horde英语Horde (software)
  • Kohana英语Kohana (framework)
  • Laravel
  • Lithium英语Lithium (software)
  • Midgard英语Midgard (software)
  • MODX英语MODX
  • Nette英语Nette Framework
  • Phalcon
  • PRADO英语PRADO (framework)
  • Qcodo英语Qcodo
  • Silex英语Silex (web framework)
  • SilverStripe
  • Symfony
  • TYPO3
  • Xaraya英语Xaraya
  • XOOPS
  • Yii英语Yii
  • Zend framework
Python
Ruby
  • Camping英语Camping (microframework)
  • Merb英语Merb
  • Padrino英语Padrino (web framework)
  • Ruby on Rails
  • Sinatra英语Sinatra (software)
Rust
  • Yew
Scala
  • Lift
  • Play
  • Scalatra英语Scalatra
Smalltalk
  • AIDA/Web英语AIDA/Web
  • Seaside英语Seaside (software)
其他语言
  • Application Express英语Oracle Application ExpressPL-SQL
  • Grails英语Grails (framework)Groovy
  • Kepler英语Kepler (software)Lua
  • OpenACS英语OpenACSTcl
  • Phoenix英语Phoenix (web framework)Elixir
  • SproutCore英语SproutCoreJavaScript-Ruby
  • YawsErlang