Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 15533144ea879a3ee7f2cdcbb31e4859 > files > 85

apache-mod_python-doc-3.3.1-12mdv2010.0.i586.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<link rel="STYLESHEET" href="modpython.css" type='text/css' />
<link rel="first" href="modpython.html" title='Mod_python Manual' />
<link rel='contents' href='contents.html' title="Contents" />
<link rel='index' href='genindex.html' title='Index' />
<link rel='last' href='about.html' title='About this document...' />
<link rel='help' href='about.html' title='About this document...' />
<link rel="prev" href="intr-flexibility.html" />
<link rel="parent" href="introduction.html" />
<link rel="next" href="installation.html" />
<meta name='aesop' content='information' />
<title>1.3 History</title>
</head>
<body>
<DIV CLASS="navigation">
<div id='top-navigation-panel' xml:id='top-navigation-panel'>
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="1.2 Flexibility"
  href="intr-flexibility.html"><img src='previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
<td class='online-navigation'><a rel="parent" title="1. Introduction"
  href="introduction.html"><img src='up.png'
  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
<td class='online-navigation'><a rel="next" title="2. Installation"
  href="installation.html"><img src='next.png'
  border='0' height='32'  alt='Next Page' width='32' /></A></td>
<td align="center" width="100%">Mod_python Manual</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='contents.png'
  border='0' height='32'  alt='Contents' width='32' /></A></td>
<td class='online-navigation'><img src='blank.png'
  border='0' height='32'  alt='' width='32' /></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='index.png'
  border='0' height='32'  alt='Index' width='32' /></A></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="intr-flexibility.html">1.2 Flexibility</A>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="introduction.html">1. Introduction</A>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="installation.html">2. Installation</A>
</div>
<hr /></div>
</DIV>
<!--End of Navigation Panel-->

<H1><A NAME="SECTION003300000000000000000"></A><A NAME="intr-history"></A>
<BR>
1.3 History
</H1>

<P>
Mod_python originates from a project called
  <em class="citetitle"><a
 href="http://www.modpython.org/httpdapy/"
 title="Httpdapy"
 >Httpdapy</a></em>
  (1997). For a long time Httpdapy was not called mod_python because
  Httpdapy was not meant to be Apache-specific. Httpdapy was designed
  to be cross-platform and in fact was initially written for the
  Netscape server (back then it was called Nsapy (1997).

<P>
Nsapy  itself was based on an original concept and first code by 
  Aaron Watters from "Internet Programming with Python" by Aaron Watters,
  Guido Van Rossum and James C. Ahlstrom, ISBN 1-55851-484-8.

<P>
Without Aaron's inspiration, there would be no mod_python. Quoting from 
  the Httpdapy README file:

<P>
<div class="verbatim"><pre>
Although Nsapy only worked with Netscape servers, it was very generic in its
design and was based on some brilliant ideas that weren't necessarily Netscape
specific. Its design is a combination of extensibility, simplicity and 
efficiency that takes advantage of many of the key benefits of Python and is
totally in the spirit of Python.
</pre></div>

<P>
This excerpt from the Httpdapy README file describes well the
  challenges and the solution provided by embedding Python within the
  HTTP server:

<P>
<div class="verbatim"><pre>
While developing my first WWW applications a few years back, I found
that using CGI for programs that need to connect to relational
databases (commercial or not) is too slow because every hit requires
loading of the interpreter executable which can be megabytes in size,
any database libraries that can themselves be pretty big, plus, the
database connection/authentication process carries a very significant
overhead because it involves things like DNS resolutions, encryption,
memory allocation, etc.. Under pressure to speed up the application, I
nearly gave up the idea of using Python for the project and started
researching other tools that claimed to specialize in www database
integration. I did not have any faith in MS's ASP; was quite
frustrated by Netscape LiveWire's slow performance and bugginess; Cold
Fusion seemed promising, but I soon learned that writing in html-like
tags makes programs as readable as assembly. Same is true for
PHP. Besides, I *really* wanted to write things in Python.

Around the same time the Internet Programming With Python book came
out and the chapter describing how to embed Python within Netscape
server immediately caught my attention.  I used the example in my
project, and developed an improved version of what I later called
Nsapy that compiled on both Windows NT and Solaris.

Although Nsapy only worked with Netscape servers, it was a very
intelligent generic OO design that, in the spirit of Python, that lent
itself for easy portability to other web servers.

Incidently, the popularity of Netscape's servers was taking a turn
south, and so I set out to port Nsapy to other servers starting with
the most popular one, Apache. And so from Nsapy was born Httpdapy.
</pre></div>

<P>
...continuing this saga, yours truly later learned that writing
  Httpdapy for every server is a task a little bigger and less
  interesting than I originally imagined.

<P>
Instead, it seemed like providing a Python counterpart to the
  popular Perl Apache extension mod_perl that would give Python users
  the same (or better) capability would be a much more exciting thing
  to do.

<P>
And so it was done. The first release of mod_python happened in May
  of 2000.

<DIV CLASS="navigation">
<div class='online-navigation'>
<p></p><hr />
<table align="center" width="100%" cellpadding="0" cellspacing="2">
<tr>
<td class='online-navigation'><a rel="prev" title="1.2 Flexibility"
  href="intr-flexibility.html"><img src='previous.png'
  border='0' height='32'  alt='Previous Page' width='32' /></A></td>
<td class='online-navigation'><a rel="parent" title="1. Introduction"
  href="introduction.html"><img src='up.png'
  border='0' height='32'  alt='Up One Level' width='32' /></A></td>
<td class='online-navigation'><a rel="next" title="2. Installation"
  href="installation.html"><img src='next.png'
  border='0' height='32'  alt='Next Page' width='32' /></A></td>
<td align="center" width="100%">Mod_python Manual</td>
<td class='online-navigation'><a rel="contents" title="Table of Contents"
  href="contents.html"><img src='contents.png'
  border='0' height='32'  alt='Contents' width='32' /></A></td>
<td class='online-navigation'><img src='blank.png'
  border='0' height='32'  alt='' width='32' /></td>
<td class='online-navigation'><a rel="index" title="Index"
  href="genindex.html"><img src='index.png'
  border='0' height='32'  alt='Index' width='32' /></A></td>
</tr></table>
<div class='online-navigation'>
<b class="navlabel">Previous:</b>
<a class="sectref" rel="prev" href="intr-flexibility.html">1.2 Flexibility</A>
<b class="navlabel">Up:</b>
<a class="sectref" rel="parent" href="introduction.html">1. Introduction</A>
<b class="navlabel">Next:</b>
<a class="sectref" rel="next" href="installation.html">2. Installation</A>
</div>
</div>
<hr />
<span class="release-info">Release 3.3.1, documentation updated on January 29, 2007.</span>
</DIV>
<!--End of Navigation Panel-->

</BODY>
</HTML>