Newer
Older
5001
5002
5003
5004
5005
5006
5007
5008
5009
5010
5011
5012
5013
5014
5015
5016
5017
5018
5019
5020
5021
5022
5023
5024
5025
5026
5027
5028
5029
5030
5031
5032
5033
5034
5035
5036
5037
5038
5039
5040
5041
5042
5043
5044
5045
5046
5047
5048
5049
5050
5051
5052
5053
5054
5055
5056
5057
5058
5059
5060
5061
5062
5063
5064
5065
5066
5067
5068
5069
5070
5071
5072
5073
5074
5075
5076
5077
5078
5079
5080
5081
5082
5083
5084
5085
5086
5087
5088
5089
5090
5091
5092
5093
5094
5095
5096
5097
5098
5099
5100
5101
5102
5103
5104
5105
5106
5107
5108
5109
5110
5111
5112
5113
5114
5115
5116
5117
5118
<tr>
<td><font face="arial, helvetica" size="-1">modpython publisher</font></td>
<td align=right><font face="arial, helvetica" size="-1">300</font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1"><b>Spyce-proxy</b></font></td>
<td align=right><font face="arial, helvetica" size="-1"><b>200</b></font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1">JSP</font></td>
<td align=right><font face="arial, helvetica" size="-1">100</font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1">PHP</font></td>
<td align=right><font face="arial, helvetica" size="-1">450</font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1"><b>Spyce-FCGI</b></font></td>
<td align=right><font face="arial, helvetica" size="-1"><b>100</b></font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1">Python-FCGI</font></td>
<td align=right><font face="arial, helvetica" size="-1">140</font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1"><b>Spyce-CGI</b></font></td>
<td align=right><font face="arial, helvetica" size="-1"><b>8</b></font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1">Python-CGI</font></td>
<td align=right><font face="arial, helvetica" size="-1">25</font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1">C-CGI</font></td>
<td align=right><font face="arial, helvetica" size="-1">180</font></td>
</tr>
<tr>
<td><font face="arial, helvetica" size="-1">Static HTML</font></td>
<td align=right><font face="arial, helvetica" size="-1">1500</font></td>
</tr>
</table>
<p>
The throughput results (shown above in requests per second) were measured on a
Intel PIII 700MHz, with 128 MB of RAM and a 512 KB cache
running RedHat Linux 7.2 (2.4.7-10 kernel), Apache 1.3.22 and
Python 2.2 using loopback (http://localhost/...) requests. Since each of
the script languages requires an initial compilation phase (of which JSP seems
the longest), the server was warmed up with 100 requests before executing
1000 measured requests with a concurrency level of 3, using the
ab (Apache benchmark) tool. Figures are rounded to the nearest
25 requests/second. <p>
<b>Conclusion:</b>All spyce configuration options except CGI
can handle large
websites, as the Spyce engine and cache persist between requests. The CGI
version takes a hit in recompiling Spyce files on every request. (This may be
alleviated using a disk-based Spyce cache (as opposed to the current
memory-based implementation).)
<p>
<big><a name="add_history"></a><b>4.2. <font color=#ee0000>History</font></b></big><p>
The initial idea for a Python-based HTML scripting language came in May 1999,
a few months after I (Rimon) had first learned of Python, while working with JSP on
some website. The idea was pretty basic and I felt that someone was bound to
implement it sooner or later, so I waited. But, nobody stepped up to the task,
and the idea remained little more than a design in my head for two and a half
years. In early 2002, after having successfully used Python extensively for
various other tasks and gaining experience with the language, I began to
revisit my thoughts on a Python-based HTML scripting language, and by late
May 2002 the beta of version 1.0 was released. <p>
<b>Version 1.0</b> had support for standard features like get and post,
cookies, session management, etc. Development was still on-going, but Spyce
was mature and being used on live systems. Support of various features was
enhanced for about a week or two, and then a new design idea popped into my
head. <b>Version 1.1</b> was the first modular release of Spyce. Lots of
prior functionality was shipped out of the core engine and into standard
modules. Many, many new modules and features were added. Spyce popularity rose
to the top percentile of SourceForge projects and the user base grew.
<b>Version 1.2</b> represented a greatly matured release of Spyce. Spyce
got a totally revamped website and documentation, and development continued.
<b>Version 1.3</b> introduced active tags. More performance work, more
modules, etc.
<p>
In February 2005 Jonathan Ellis was hired by SilentWhistle to work on their
web application, written in Spyce. He began by overhauling the Active Tag code
and was soon deep in the guts of Spyce. Jonathan added Active Handlers,
parent templates, and the tag compiler on the way to <b>Version 2.0</b>.
<p>
In July 2006 <b>Version 2.1</b> introduced the Spyce login tags and
database integration via SQLAlchemy, as well as improvments to parameter
marshalling for Active Handlers.
<p>
For more detail, please refer to the
<a href="https://svn.sourceforge.net/svnroot/spyce/trunk/spyce/CHANGES">change log</a>.
As always, user feedback is welcome and appreciated. <p>
<!-- end body -->
<p>
</td></tr>
<tr><td colspan=5><hr></td></tr>
<tr><td colspan=5 height=15></td></tr>
<tr><td colspan=5>
<table width="100%" border=0><tr>
<td align=left valign=top>
<img alt="Spyce logo" src="/spyce2.png">
<br>
<small>Python Server Pages<br>version 2.1.3</small>
</td><td align=center valign=top>
<a href="http://spyce.sourceforge.net"><img align=middle width=120 height=50 border=0 src="/spycepow.gif" alt="Spyce Powered"></a>
<a href="http://sourceforge.net"><img align=middle src="http://sourceforge.net/sflogo.php?group_id=53655&type=5" width="141" height="50" border="0" alt="SourceForge Logo"></a>
</td><td align=right valign=top>
</td>
</tr></table>
</td></tr></table>
</body></html>