失效链接处理 |
CherryPy Essentials - Rapid Python Web Application Development PDF 下载
本站整理下载:
提取码:ev6p
相关截图:
主要内容:
The use of the World Wide Web has grown exponentially, and has become a key
component of the way we live today. From the developer's point of view, the
Web offers great opportunities and good fun. However, the growing number of
technologies oriented towards the Web is overwhelming, and it can be difficult to
decide which one to use. The goal of this book is to present one of these, CherryPy, a
Python web-application library.
This chapter will introduce CherryPy's features and strengths, beginning with a
summary of CherryPy's history, then looking at its friendly community, which has
long been an important piece of the project's success, and finally reviewing key
principles behind the evolution of CherryPy.
Overview
CherryPy is a Python library providing a friendly interface to the HTTP protocol for
Python developers. HTTP is the backbone of the World Wide Web. Web applications
have grown exponentially in the last few years. This explosion was followed by a
large number of toolkits, libraries, and frameworks released in various programming
languages to help web developers in their task. Ultimately all of these aim at making
a web developer's life much easier. In this context CherryPy has started using
Python's strengths as a dynamic language to model and bind the HTTP protocol into
a API that follows Python idioms.
The Python community has grown a large number of web libraries and frameworks
over the years to the point where it has become some kind of a joke as much as a
worry. Even though only a handful of them have attracted most of the community,
(TurboGears, Django, or Zope) each existing library or framework has kept its niche
influence by providing its own view on how to interface Python with HTTP and the
Web in general. CherryPy was born because at that time Remi Delon, its creator,
could not find what he wanted in the existing choices. Over the years, the design of
Introduction to CherryPy
CherryPy has been tuned by new developers who liked its strengths and joined in.
Today the project has a strong community base that uses it on a daily basis in many
different contexts.
History of CherryPy
Remi Delon released the first version of CherryPy in late June 2002. This was the
starting point of a successful Python web library. Remi is a French hacker who
has trusted Python for being ultimately one of the greatest alternatives for web
application development.
The project attracted a number of developers who were interested in the approach
taken by Remi:
• CherryPy classes were an extension to Python to support the separation
of concern between the data and the presentation. It was close to the
model-view-controller pattern.
• A CherryPy class has to be processed and compiled by the CherryPy engine
to produce a self-contained Python module embedding the complete
application as well as its own built-in web server.
CherryPy would map a URL and its query string into a Python method call,
for example: http://somehost.net/echo?message=hello would map to
echo(message='hello').
During the following two years, the project was supported by the community and
Remi released several improved versions.
In June 2004, a discussion started about the future of the project and whether it
should continue with the same architecture. One of the main concerns was the
compilation step, which did not feel natural to Python developers. Brainstorming
and discussion by several project regulars then led to the concept of objectpublishing engine and filters, which soon became a core ingredient of CherryPy 2.
Eventually, in October 2004, the first version of CherryPy 2 alpha was released as
a proof of concept of these core ideas. Then followed six months of intense work to
release a stable version (late April 2005). Soon other developers joined the project
to improve it. CherryPy 2.0 was a real success; however, it was recognized that its
design could still be improved, and needed refactoring.
After further community feedback/discussions, CherryPy's API was further
modified to improve its elegance, leading to the release of CherryPy 2.1.0 in October
2005. This version was shipped by the popular TurboGears project—itself a stack
of projects to produce a web mega-framework. The team released CherryPy 2.2.0 in
April 2006.
[ 8 ]
Chapter 1
CherryPy's presence as a core ingredient in the increasingly widely adopted
TurboGears stack naturally meant that more and more issues were raised about
some aspects of CherryPy. For example, its WSGI support, the lack of up-to-date
documentation, or its only-average performance. It was clear that to meet these real
and important requirements, it would be extremely difficult to extend CherryPy 2
without breaking backward-compatibility constraints. As a result, the decision was
finally made to move towards CherryPy 3, which was released at the end of 2006.
The Community
CherryPy would not be where it stands without the community built over the last
few years. Remi has always been clear about the fact that he does not want CherryPy
to be his pet project, but rather to be a community one.
CherryPy has always had its followers, but the CherryPy community actually started
with version 2.0 of the product. In November 2004, an IRC channel was registered on
the Open and Free Technology Community (OFTC) network to allow developers
and users to quickly exchange ideas or to report defects. The channel gradually
attracted more and more regulars and was generally recognized to be a very friendly
place. In addition to the IRC channel, mailing-lists were created for developers and
[ 9 ]
Introduction to CherryPy
users. Eventually a feed aggregation of blog entries of regular CherryPy users was
published and has been available since then at http://planet.cherrypy.org.
CherryPy Project Strengths • Simplicity: One of the main goals has always been to keep CherryPy as
simple as possible with the aim of avoiding the library to over engineering
the project. Thanks to the narrow scope covered by the library, the developers
have been able to concentrate on the API and community feedback.
• Self-contained: From the very beginning, Remi decided that the core of
CherryPy would not require any third-party Python packages to work and
would rely purely on the Python standard library.
• Not intrusive: Another critical aspect of the library the developers have long
cared about was to make sure that CherryPy would stay as much as possible
out of the way of its users. The idea was to provide a set of tools to any
developer making no assumptions about the way in which he or she may
choose to use them.
• Open to discussion: The developer team has always listened to the feedback
given by the community. This does not mean that every request has been
adopted, but almost all have been discussed and reviewed.
|