CherryPy

CherryPy
CherryPy
Developer(s) CherryPy team
Stable release 3.2.0 / February 25, 2011; 8 months ago (2011-02-25)
Written in Python
Operating system Cross-platform
Type Web application framework
License BSD License
Website homepage
mailing list

CherryPy is an object-oriented web application framework using the Python programming language. It is designed for rapid development of web applications by wrapping the HTTP protocol but stays at a low level and does not offer much more than what is defined in RFC 2616.

CherryPy can be a web server itself or one can launch it via any WSGI compatible environment (including Apache 2). It does not deal with tasks such as templating for output rendering, backend access, authentication protocols. The framework is extensible with filters, simple interfaces made of seven functions. These are called at defined points in the request/response processing.

Contents

Pythonic interface

One of the goals of the project founder, Remi Delon, was to make CherryPy as pythonic as possible. This allows the developer to use the framework as any regular Python module and to forget (from a technical point of view) that the application is for the web.

For instance, the common Hello World program with CherryPy 3 would look like:

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

Features [1]

  • A fast, HTTP/1.1-compliant, WSGI thread-pooled webserver. Typically, CherryPy itself takes [1][2] only 1-2 ms per page.
  • Support for any other WSGI-enabled web server or adapter, including Apache, IIS, lighttpd, mod_python, FastCGI, SCGI, and mod_wsgi.
  • A native mod_python adapter.
  • Easy to run multiple HTTP servers (e.g. on multiple ports) at once [3].
  • A flexible plugin system [4]. CherryPy plugins hook into events within the server process — into server startup, server shutdown, server exiting, etc. — to run code that needs to be run when the server starts up or shuts down.
  • Built-in tools for caching, encoding, sessions, authorization, static content, and many more. CherryPy tools hook into events within the request process. Whenever the CherryPy server receives a request, there is a specific set of steps it goes through to handle that request. Page handlers are only one step in the process. Tools also provide a very powerful syntax and configuration API for turning them on and off for a specific set of handlers.
  • A powerful configuration system for developers and deployers alike [5][6][7]. CherryPy deployments are configurable on site, on application and on controller level, through Python dictionaries, configuration files, and open file objects.
  • Swappable and customizable every component [2].
  • A complete test suite [8]:
    • Lots of tests for both basic and advanced functionality.
    • Command-line options to control which tests are run, and the output they produce.
    • Debugging tools specifically for web page tests.
    • Many of the test suite components are reusable by applications.
  • Built-in profiling since v2.1 [9], coverage [10] and testing support.

Applications

Some open source connection

CherryPy doesn’t force you to use a specific object-relational mapper, template language or JavaScript library. You are free to use any kind of technology you want.

Can be used with CherryPy

  • Routes [11] — a Python re-implementation of the Ruby on Rails's routes system for mapping URLs to controllers/actions and generating URLs.

Object-relational mappers

Templating languages

  • Mako — a template library written in Python, usable with a simple CherryPy tool [14].
  • Cheetah — an open source template engine and code generation tool, written in Python.
  • CherryTemplate — a templating language for CherryPy.
  • Genshi [15][16] — a powerful XML templating language.
  • Jinja — a general purpose templating language. CherryPy has a tool for using Jinja templates [17].
  • Kid — a simple template language for XML based vocabularies written in Python. TurboGears 1.x uses CherryPy as server and Kid as frontend [18].

CherryPy wiki helps [19] choosing a templating language.

JavaScript libraries

  • Sarissa[3] — a cross-browser library for Ajax.
  • jQuery — a lightweight library that emphasizes interaction between JavaScript and HTML.
  • Pyjamas — a Python to JavaScript compiler and a web widget set.

CherryPy is a component of

  • TurboGears — CherryPy is a main component of TurboGears 1.x.

Further reading

References

External links

Notes


Wikimedia Foundation. 2010.

Игры ⚽ Нужно сделать НИР?

Look at other dictionaries:

  • CherryPy — Тип Фреймворк для создания веб приложений Разработчик команда CherryPy Операционная система любая Языки интерфейса Python Последняя версия 3.2.0 ( …   Википедия

  • CherryPy — est une bibliothèque logicielle de développement web en Python. Liens externes Site officiel CherryPy.org Livres CherryPy Essentials: Rapid Python Web Application Development, Première Edition (Mars 2007), ISBN 978 1 904811 84 8 …   Wikipédia en Français

  • Cherrypy — …   Википедия

  • TurboGears — Infobox Software name = TurboGears developer = [http://www.blueskyonmars.com/ Kevin Dangoor] et al. latest release version = 1.0.7 latest release date = September 15, 2008 programming language = Python operating system = Cross platform genre =… …   Wikipedia

  • List of Python software — The Python programming language is actively used by many people, both in industry and academia for a wide variety of purposes. Integrated development environments * Boa Constructor, a cross platform IDE for Python development * Eric, an IDE for… …   Wikipedia

  • Pylons — Тип Программный каркас для создания веб приложений Разработчик Бен Бангерт, Джеймс Гарднер Операционная система Кроссплатформенный Последняя версия 1.3 ( …   Википедия

  • Genshi — Пожалуйста, улучшите и дополните этот раздел. Замечания о том, что нужно улучшить, могут быть на странице обсуждения статьи …   Википедия

  • TurboGears — Тип Программный каркас для создания веб приложений Разработчик Кевин Дангур(Kevin Dangoor), Марк Рамм(Mark Ramm) Операционная система Кроссплатформенный Последняя версия …   Википедия

  • Comparison of web application frameworks — This is a comparison of notable web application frameworks. Contents 1 General 1.1 Perl 1.2 PHP 1.3 Java 1.4 Python …   Wikipedia

  • Python (langage) — Pour les articles homonymes, voir Python. Python …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”