CherryPy
維基百科,自由的 encyclopedia
CherryPy是一個物件導向的web應用框架,使用了Python程式語言。它設計用於web應用的快速開發,通過包裹HTTP協定,但停留在低層而不提供超出RFC 7231所定義的東西。
Quick Facts 開發者, 首次發佈 ...
開發者 | CherryPy team |
---|---|
首次發佈 | 2002年6月,22年前(2002-06)[1] |
目前版本 |
![]() |
原始碼庫 | CherryPy Repository |
程式語言 | Python |
作業系統 | 跨平台 |
類型 | Web應用框架 |
許可協定 | BSD許可證[3] |
網站 | cherrypy |
Close
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伺服器或配接器,包括Apache、IIS、lighttpd、mod_python(英語:mod_python)、FastCGI、SCGI和mod_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 system)或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(英語:Storm (software)),Canonical公司的ORM。
- MongoEngine,用於連接到MongoDB的ODM[16]。
模板語言
- 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寫的詞彙表。
參見
參照
- 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).
- 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).