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

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

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]

对象关系映射器

编辑

模板语言

编辑

参见

编辑

引用

编辑
  1. ^ History of CherryPy. [2021-03-12]. (原始内容存档于2018-12-15). 
  2. ^ Release v18.10.0. 2024年6月15日 [2025年2月2日]. 
  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). 

外部链接

编辑

📚 Artikel Terkait di Wikipedia

Python

用接口,来協調HTTP伺服器與基於Python的Web程式之間的溝通。比如,通過mod_wsgi(英语:mod_wsgi)模組,Apache HTTP Server可以運行用Python編寫的Web程式。 用Python编写的一些Web框架,有助於輕鬆地開發和管理複雜的Web程式。重要的第三方网络编程(英语:Computer

Web服务器网关接口

的一个问题,这是因为,一般而言,Web应用框架的选择将限制可用的Web服务器的选择,反之亦然。那时的Python应用程序通常是为CGI,FastCGI,mod_python(英语:mod_python)中的一个而设计,甚至是为特定Web服务器的自定义的API接口而设计的。 WSGI

Django

一套支持轻量级标记语言(Textile和Markdown)的模板库 一套协助创建地理信息系统(GIS)的基础框架 Django可以运行在启用了mod_python的Apache 2上,或是任何WSGI兼容的Web服务器。Django也有启动FastCGI服务的能力,因此能够应用于任何支持FastCGI的机器上。

Apache HTTP Server

Python,Tcl, 和PHP。流行的认证模块包括mod_access,mod_auth和mod_digest。其他的例子有SSL和TLS支持(mod_ssl),代理服务器(proxy)模块,很有用的URL重写(由mod_rewrite实现),定制日志文件(mod

通用网关接口

中,这样就无须新建一个进程来执行脚本。Apache服务器有很多这样的模块,像mod_cplusplus (页面存档备份,存于互联网档案馆)、mod_perl、mod_php、mod_python、mod_ruby、和mod_mono。 FastCGI CGI.pm 简单通用网关接口 Perl RFC3875:

服务器应用程序接口

Apache模块 mod_jk(英语:mod_jk) mod_lisp(英语:mod_lisp) mod_mono(英语:mod_mono) mod_parrot(英语:mod_parrot) mod_perl(英语:mod_perl) mod_php mod_proxy mod_python(英语:mod_python)

MadEdit

支援许多种编程语言的语法加亮,包括awk、DOS批处理脚本、C/C++、diff/patch、HTML、CSS、Java、JavaScript、Pascal、PHP、Perl、Python、Ruby、UNIX Shell脚本、汇编语言 可在Windows平台下浏览ASCII-艺术(用ASCII字符拼成的各种图形)文件 由於 MadEdit

CPL語言

据认为CPL在1960年代从未被完全实现,它是作为具有一些关于部份实现的研究工作的理论性构造而存在的。 Peter Norvig曾经用Yapps(一个Python编译器生成器)为现代机器写出了一个简单的CPL到Python转译器。 Coulouris, G. F. The London CPL1 compiler. The Computer