<?xml version="1.0" encoding="utf-8" ?>

<rss version="2.0" 
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:admin="http://webns.net/mvcb/"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:wfw="http://wellformedweb.org/CommentAPI/"
   xmlns:content="http://purl.org/rss/1.0/modules/content/"
   >
<channel>
    <title>Allan Saddi's projects blog - Python</title>
    <link>http://www.saddi.com/software/news/</link>
    <description>Announcements and ramblings about projects new and old.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.0.4 - http://www.s9y.org/</generator>
    <pubDate>Wed, 21 Oct 2009 16:48:10 GMT</pubDate>

    <image>
        <url>http://www.saddi.com/software/news/templates/default/img/s9y_banner_small.png</url>
        <title>RSS: Allan Saddi's projects blog - Python - Announcements and ramblings about projects new and old.</title>
        <link>http://www.saddi.com/software/news/</link>
        <width>100</width>
        <height>21</height>
    </image>

<item>
    <title>new flup snapshot</title>
    <link>http://www.saddi.com/software/news/archives/70-new-flup-snapshot.html</link>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/70-new-flup-snapshot.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=70</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=70</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I just released a new snapshot, it includes the following changes:&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;fix fork bomb and check number of children against minSpare not maxSpare&lt;/li&gt;&lt;li&gt;Restore check of the absolute number of children against maxSpare and document rationale.&lt;/li&gt;&lt;li&gt;Add configurable timeout (default: no timeout) to be used when the WSGI application is called. Only applies to forked servers!&lt;/li&gt;&lt;/ul&gt;&lt;br /&gt;
Here are links to the &lt;a href=&quot;http://hg.saddi.com/flup-server/&quot;&gt;Hg repository&lt;/a&gt; and the &lt;a href=&quot;http://pypi.python.org/pypi/flup/1.0.3.dev-20091021&quot;&gt;PyPI page&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
If there are any issues, please open a ticket at the &lt;a href=&quot;http://trac.saddi.com/flup&quot;&gt;flup Trac&lt;/a&gt; and/or submit a patch. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Wed, 21 Oct 2009 09:48:10 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/70-guid.html</guid>
    
</item>
<item>
    <title>SHA stuff moved to Hg</title>
    <link>http://www.saddi.com/software/news/archives/68-SHA-stuff-moved-to-Hg.html</link>
            <category>General</category>
            <category>py-lib</category>
    
    <comments>http://www.saddi.com/software/news/archives/68-SHA-stuff-moved-to-Hg.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=68</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=68</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I didn&#039;t realize this, but all my SHA implementations were still living in my Subversion repository. Well, after some meticulous converting from both my archived CVS &lt;em&gt;and&lt;/em&gt; SVN repositories, I&#039;ve managed to finally move them over to Mercurial.&lt;br /&gt;
&lt;br /&gt;
Anyway, I&#039;m not sure what else in Subversion I&#039;d like to move over. Certainly, there&#039;s nothing left in there that&#039;s all that interesting to the public. So I will take down the public-facing SVN repo... someday.&lt;br /&gt;
&lt;br /&gt;
Searching Google, I see nothing links directly svn.saddi.com. However, there&#039;s quite &lt;em&gt;a lot&lt;/em&gt; of documentation that references flup and fcgi.py within it. Well, if anyone&#039;s been checking out &lt;em&gt;that&lt;/em&gt; flup, it&#039;s 2 years out of date. And the standalone fcgi.py module... I&#039;d rather just forget about that since it&#039;s hopelessly out of sync from the flup version. (It&#039;s basically the flup threaded fcgi server without thread pools.) 
    </content:encoded>

    <pubDate>Mon, 03 Aug 2009 21:21:29 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/68-guid.html</guid>
    
</item>
<item>
    <title>Submitting Patches</title>
    <link>http://www.saddi.com/software/news/archives/67-Submitting-Patches.html</link>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/67-Submitting-Patches.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=67</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=67</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I&#039;ve written up brief guidelines on &lt;a href=&quot;http://trac.saddi.com/flup/wiki/SubmittingPatches&quot;&gt;submitting patches for flup&lt;/a&gt;. (Though it also pertains to any of my other public projects.)&lt;br /&gt;
&lt;br /&gt;
And I&#039;d like to thank everyone who has recently contributed! Don&#039;t worry, there&#039;s nothing in the guidelines that you weren&#039;t already doing. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 03 Aug 2009 11:34:18 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/67-guid.html</guid>
    
</item>
<item>
    <title>flup 1.0.2 released</title>
    <link>http://www.saddi.com/software/news/archives/66-flup-1.0.2-released.html</link>
            <category>Python</category>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/66-flup-1.0.2-released.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=66</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=66</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    See &lt;a href=&quot;http://www.saddi.com/software/news/archives/65-flup-1.0.2-on-the-horizon....html&quot;&gt;this entry&lt;/a&gt; for details.&lt;br /&gt;
 
    </content:encoded>

    <pubDate>Tue, 26 May 2009 08:02:23 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/66-guid.html</guid>
    
</item>
<item>
    <title>flup 1.0.2 on the horizon...</title>
    <link>http://www.saddi.com/software/news/archives/65-flup-1.0.2-on-the-horizon....html</link>
            <category>Python</category>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/65-flup-1.0.2-on-the-horizon....html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=65</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=65</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I guess I&#039;ve sat on these changes long enough:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Import Paste factories (and dependencies...) from PasteScript&lt;/li&gt;&lt;li&gt;Be tolerant of EAGAIN when sending messages to parent process.&lt;/li&gt;&lt;li&gt;Add forceCGI keyword argument to FastCGI servers to programmatically force CGI behavior.&lt;/li&gt;&lt;li&gt;Merge Tommi Virtanen&#039;s &quot;single server&quot; (sequential server) patch.&lt;/li&gt;&lt;li&gt;Update ez_setup.py.&lt;/li&gt;&lt;li&gt;Re-seed random module after each fork.&lt;/li&gt;&lt;li&gt;Add an indication as to which header fails assertion when passing in non-string header names and/or values.&lt;/li&gt;&lt;/ul&gt;The only major change are the Paste factories &amp;mdash; they should be a lot closer to the (deprecated) factories for flup servers found in PasteScript. In fact, they are the same factories found in PasteScript. Defaults will have changed, with respect to the previous factory implementations.&lt;br /&gt;
&lt;br /&gt;
I&#039;m looking to release in a week or so. Testing/comments are welcome:&lt;br /&gt;
&lt;br /&gt;
&lt;a href=&quot;http://hg.saddi.com/flup-server/&quot;&gt;http://hg.saddi.com/flup-server/&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
And, as you probably have noticed, I don&#039;t cut releases that often (not a big fan of &quot;release early, release often&quot;...) &lt;b&gt;But&lt;/b&gt; my public repository is always up-to-date. So it&#039;s almost the same thing... without the overhead. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Mon, 18 May 2009 16:06:49 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/65-guid.html</guid>
    
</item>
<item>
    <title>Dabbling in Python 3.0</title>
    <link>http://www.saddi.com/software/news/archives/64-Dabbling-in-Python-3.0.html</link>
            <category>Python</category>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/64-Dabbling-in-Python-3.0.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=64</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=64</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    Well, Python 3.0 was &lt;a href=&quot;http://www.python.org/download/releases/3.0/&quot;&gt;released&lt;/a&gt; a few days ago. I admit, I really haven&#039;t been keeping up much with Python development. Up until yesterday, Python 2.5 was all that I&#039;ve used.&lt;br /&gt;
&lt;br /&gt;
Anyway, I was curious. I was curious about all the backwards-incompatible changes to the language/libraries. I was curious about how WSGI dealt with Python 3.0. With the list of &lt;a href=&quot;http://wsgi.org/wsgi/Amendments_1.0&quot;&gt;proposed WSGI 1.0 amendments&lt;/a&gt; for Python 3.0 (and the Web-SIG posts it referenced), I attempted to port both flup and ajp-wsgi.&lt;br /&gt;
&lt;br /&gt;
It was interesting, at least, to see the issues in two different lights. Though flup and ajp-wsgi do the same thing conceptually, flup is pure-Python and ajp-wsgi is pure-C. The most pain for both, unsurprisingly, came from the new str/bytes distinction. While it was an annoying issue to deal with (and I realize as far as the spec is concerned, all details about it still haven&#039;t been worked out), I do welcome the change.&lt;br /&gt;
&lt;br /&gt;
I&#039;ve published both repositories, for the curious. They work for simple &quot;Hello World&quot; type applications. I kind of doubt that any frameworks have been ported to Python 3.0 yet. I probably won&#039;t touch them again until the spec has been clarified more. (Encoding of environ key/values? file_wrapper support with e.g. text-mode files?)&lt;br /&gt;
&lt;br /&gt;
Interestingly, I didn&#039;t actually test the FastCGI and SCGI adapters with &quot;real&quot; web servers. (I don&#039;t have anything set up.) I used the flup client implementations to cross-test clients/servers on 2.x/3.0. So those flup WSGI servers might actually be broken. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
The repositories:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://hg.saddi.com/ajp-wsgi-py3.0/&quot;&gt;http://hg.saddi.com/ajp-wsgi-py3.0/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;http://hg.saddi.com/flup-py3.0/&quot;&gt;http://hg.saddi.com/flup-py3.0/&lt;/a&gt;&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Fri, 05 Dec 2008 16:50:30 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/64-guid.html</guid>
    
</item>
<item>
    <title>flup 1.0.1 released</title>
    <link>http://www.saddi.com/software/news/archives/63-flup-1.0.1-released.html</link>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/63-flup-1.0.1-released.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=63</wfw:comment>

    <slash:comments>8</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=63</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    A very minor update to flup. If you aren&#039;t having any problems now, then there&#039;s probably no need to upgrade.&lt;br /&gt;
&lt;br /&gt;
This update concerns certain web servers &amp;amp; configurations that don&#039;t correctly supply PATH_INFO and/or QUERY_STRING to flup. When missing these environment entries, the flup servers will now attempt to deduce PATH_INFO and/or QUERY_STRING from REQUEST_URI (if it is present) before defaulting to the empty string (as it did before).&lt;br /&gt;
&lt;br /&gt;
Thanks to Richard Davies for the patch. 
    </content:encoded>

    <pubDate>Tue, 22 Jul 2008 11:50:55 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/63-guid.html</guid>
    
</item>
<item>
    <title>Middleware, publisher alternatives</title>
    <link>http://www.saddi.com/software/news/archives/61-Middleware,-publisher-alternatives.html</link>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/61-Middleware,-publisher-alternatives.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=61</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=61</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    With the advent of flup 1.0 and the disappearance of the middleware modules (I don&#039;t think anyone really cares about Publisher &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;), I&#039;ve been getting a few queries here and there about alternatives.&lt;br /&gt;
&lt;br /&gt;
Rather than continue to answer people individually, here are some alternatives to flup&#039;s middleware and publisher modules. However, they represent alternatives that I&#039;ve personally chosen. (And considering how far removed I am nowadays from the world of Python web development, take my choices with a grain of salt.) Suggestions for other alternatives (alternative alternatives?!?) are welcome.&lt;br /&gt;
&lt;br /&gt;
For users of flup&#039;s SessionMiddleware, I recommend &lt;a href=&quot;http://beaker.groovie.org/&quot;&gt;Beaker&lt;/a&gt;. Switching over is a simple matter of changing the environ key from &#039;com.saddi.service.session&#039; to &#039;beaker.session&#039; and ensuring that session.save() is called before the WSGI application returns. (After you&#039;ve appropriately swapped out flup&#039;s SessionMiddleware with Beaker&#039;s in the WSGI stack, of course.)&lt;br /&gt;
&lt;br /&gt;
GzipMiddleware and ErrorMiddleware have analogues in &lt;a href=&quot;http://pythonpaste.org/&quot;&gt;Python Paste&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
flup&#039;s Publisher is probably most like &lt;a href=&quot;http://wsgiarea.pocoo.org/colubrid/&quot;&gt;Colubrid&lt;/a&gt;, though I haven&#039;t personally tried it. (Also remember that flup&#039;s Publisher was inspired by mod_python&#039;s &lt;a href=&quot;http://www.modpython.org/live/current/doc-html/hand-pub.html&quot;&gt;Publisher&lt;/a&gt;, which was apparently inspired by Zope&#039;s ZPublisher &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;).&lt;br /&gt;
&lt;br /&gt;
Anyway, I updated the old &lt;a href=&quot;http://hg.saddi.com/flup&quot;&gt;flup 0.5 branch&lt;/a&gt; and uploaded the source distribution to the &lt;a href=&quot;http://pypi.python.org/pypi/flup/0.5&quot;&gt;Cheese Shop&lt;/a&gt;. I really don&#039;t want to maintain two branches, so consider this 0.5 release final. 
    </content:encoded>

    <pubDate>Tue, 25 Sep 2007 17:06:12 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/61-guid.html</guid>
    
</item>
<item>
    <title>flup 1.0 released</title>
    <link>http://www.saddi.com/software/news/archives/58-flup-1.0-released.html</link>
            <category>flup</category>
    
    <comments>http://www.saddi.com/software/news/archives/58-flup-1.0-released.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=58</wfw:comment>

    <slash:comments>7</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=58</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I resolved a few more outstanding issues with flup and decided to make a release. I went ahead and called it 1.0. And as I &lt;a href=&quot;http://www.saddi.com/software/news/archives/45-QUERY_STRING-changes-to-servers,-API-changes-to-GzipMiddleware,-future-changes.html&quot;&gt;previously mentioned&lt;/a&gt;, I went ahead and removed the publisher and middleware modules.&lt;br /&gt;
&lt;br /&gt;
If you&#039;ve been following the Subversion repository for flup (which has been quiet due to my switching to Mercurial), there have only been 1 or 2 new fixes.&lt;br /&gt;
&lt;br /&gt;
I also uploaded the tarball and 2.5 egg to the &lt;a href=&quot;http://pypi.python.org/pypi/flup/1.0&quot;&gt;Cheese Shop&lt;/a&gt;. Further updates will also go to the Cheese Shop.&lt;br /&gt;
&lt;br /&gt;
And on the subject of further updates, consider flup to be in maintenance mode - there won&#039;t be any more new development. Bug fixes and bug reports are still welcome, of course. (Though this has been the way I&#039;ve run flup for quite a while now, so I&#039;m just making a formal announcement. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;)&lt;br /&gt;
&lt;br /&gt;
And as a bit of editorializing, did I ever mention how much I &lt;strong&gt;hate&lt;/strong&gt; FastCGI? &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Around the time I first released flup, I had transitioned my apps from FastCGI to AJP, and I never missed FastCGI since. But much to my disappointment, the FastCGI module was the most popular... most likely due to ubiquitous &amp;amp; cheap shared hosting services (e.g. Dreamhost).&lt;br /&gt;
&lt;br /&gt;
Oh well, I don&#039;t even use flup myself anymore. I&#039;ve switched to ajp-wsgi... 
    </content:encoded>

    <pubDate>Mon, 10 Sep 2007 16:59:33 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/58-guid.html</guid>
    
</item>
<item>
    <title>ajp-wsgi 1.0 released</title>
    <link>http://www.saddi.com/software/news/archives/55-ajp-wsgi-1.0-released.html</link>
            <category>Python</category>
    
    <comments>http://www.saddi.com/software/news/archives/55-ajp-wsgi-1.0-released.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=55</wfw:comment>

    <slash:comments>2</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=55</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    &lt;a href=&quot;/software/ajp-wsgi/&quot;&gt;ajp-wsgi&lt;/a&gt; 1.0 has been released. It may be downloaded &lt;a href=&quot;/software/ajp-wsgi/dist/&quot;&gt;here&lt;/a&gt; (&lt;a href=&quot;/software/ajp-wsgi/dist/ChangeLog&quot;&gt;ChangeLog&lt;/a&gt;). It&#039;s been sitting around for a few months now, in heavy use at my server for both &quot;production&quot; and development WSGI apps. I think it&#039;s pretty safe to say it&#039;s at least on par with flup&#039;s ajp WSGIServer now. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
The only lingering issue is a core dump with Trac and only Trac, and only when it is killed or SIGHUP&#039;d. Unfortunately, with so many variables (Trac imports quite a few C extension modules), I haven&#039;t been able to isolate problem. (And maybe it&#039;s just my environment... sadly, I don&#039;t have the resources to try elsewhere.)&lt;br /&gt;
&lt;br /&gt;
Anyway, 1.0... so what now? &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; 
    </content:encoded>

    <pubDate>Fri, 06 Apr 2007 11:07:24 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/55-guid.html</guid>
    
</item>
<item>
    <title>ajp-wsgi future directions</title>
    <link>http://www.saddi.com/software/news/archives/54-ajp-wsgi-future-directions.html</link>
            <category>Python</category>
    
    <comments>http://www.saddi.com/software/news/archives/54-ajp-wsgi-future-directions.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=54</wfw:comment>

    <slash:comments>3</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=54</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    My C WSGI implementation is relatively decoupled from the transport code (AJP). It&#039;s conceivable that replacing the transport layer with something else is entirely possible. Like say... a full HTTP 1.1 server. I guess there could be two directions to take that:&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;http-wsgi&lt;/strong&gt;&lt;br /&gt;
I suppose one could take an embeddable HTTP server (or write one from scratch, if so inclined) and glue the WSGI code into the request handling pipeline. Personally, it&#039;s not a project that interests me much. Leave web server writing to the web server experts, I say. However, suppose one wrote it as an extension module for one of the popular web servers...&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;mod_wsgi&lt;/strong&gt;&lt;br /&gt;
How about an extension module for say, Apache HTTPD or lighttpd? The problem I see with this is that, functionally, it would just be equivalent to mod_python. (After all, you&#039;re just embedding Python into the web server and patching into its request processing.) I think the only difference would be that the WSGI-adapter code (the layer that sits just above Python) would be written in C. Additionally, you inherit some of the more interesting problems of mod_python... namely conforming Python&#039;s process/threading model to that of the web server&#039;s. In all likelihood, you would be running multi-process, not multi-threaded. I guess if you were clever, you could run the Python interpreter in only a single process, similar to how CGI works in modern versions of Apache HTTPD.&lt;br /&gt;
&lt;br /&gt;
But then, if you do that, all it buys you is automatic process management versus using an external server model like AJP/SCGI. So why bother with yet another mod_somethingsomething?&lt;br /&gt;
&lt;br /&gt;
Anyway, ajp-wsgi will remain ajp-wsgi for the foreseeable future. (If I&#039;m sufficiently bored and curious, I may try creating an scgi-wsgi someday.) Though http-wsgi does pique my interest somewhat... I just have to find a suitably feature-laden embeddable C web server. 
    </content:encoded>

    <pubDate>Thu, 15 Feb 2007 16:25:17 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/54-guid.html</guid>
    
</item>
<item>
    <title>Updates</title>
    <link>http://www.saddi.com/software/news/archives/52-Updates.html</link>
            <category>Python</category>
    
    <comments>http://www.saddi.com/software/news/archives/52-Updates.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=52</wfw:comment>

    <slash:comments>1</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=52</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    Well, not much has been happening. &lt;a href=&quot;http://www.saddi.com/software/ajp-wsgi/&quot;&gt;ajp-wsgi&lt;/a&gt; has been humming along, stable as a rock. It&#039;s been running all of my Python-based websites for a little over a month now (longer, really, since I had to reboot my server early January to update FreeBSD). Once I make a few documentation updates, I think it would be safe to declare a 1.0 release. (Seemingly a big milestone nowadays...) 
    </content:encoded>

    <pubDate>Wed, 14 Feb 2007 14:44:38 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/52-guid.html</guid>
    
</item>
<item>
    <title>ajp-wsgi released</title>
    <link>http://www.saddi.com/software/news/archives/51-ajp-wsgi-released.html</link>
            <category>Python</category>
    
    <comments>http://www.saddi.com/software/news/archives/51-ajp-wsgi-released.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=51</wfw:comment>

    <slash:comments>4</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=51</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    Well, after a week of coding, I decided to &quot;release&quot; &lt;code&gt;ajp-wsgi&lt;/code&gt; (i.e. make its existence known beyond my web sites and blog). It&#039;s a rather niche project, but if one other person finds it useful, then hey, cool. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt; Releasing it costs me nothing.&lt;br /&gt;
&lt;br /&gt;
I found it highly educational to create, illuminating the mysteries of the Python C API. Plus I&#039;m using it everywhere now. And after having closed &lt;a href=&quot;http://trac.saddi.com/projects/ticket/4&quot;&gt;ticket #4&lt;/a&gt;, the solution of which seems to have been a panacea to all current issues, it&#039;s pretty much complete as far as I envisioned it.&lt;br /&gt;
&lt;br /&gt;
Now maybe I can get back to &lt;a href=&quot;http://www.saddi.com/software/flannel/&quot;&gt;Flannel&lt;/a&gt;...&lt;br /&gt;
&lt;br /&gt;
And I have thought about writing an SCGI version as well... but it&#039;s not something I would use. So what&#039;s the point? I don&#039;t really like supporting something I don&#039;t use regularly, though by virtue of being free software, I&#039;m not really obligated to provide any support. (But I still do because I&#039;m a nice guy. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;) Maybe if Apache HTTPD eventually adds a mod_proxy_scgi though...&lt;br /&gt;
&lt;br /&gt;
Ah, &lt;a href=&quot;http://www.google.com/search?q=mod_proxy_scgi&quot;&gt;no Google hits&lt;/a&gt; for mod_proxy_scgi. Oh well. At least this entry may eventually show up. 
    </content:encoded>

    <pubDate>Sat, 16 Dec 2006 19:49:18 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/51-guid.html</guid>
    
</item>
<item>
    <title>Ah-ha!</title>
    <link>http://www.saddi.com/software/news/archives/50-Ah-ha!.html</link>
            <category>Python</category>
    
    <comments>http://www.saddi.com/software/news/archives/50-Ah-ha!.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=50</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=50</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    Apparently, I did not read the AJP13 spec nor my original code very closely:&lt;br /&gt;
&lt;blockquote&gt;Note: The content-length header is extremely important. If it is present and non-zero, the container assumes that the request has a body (a POST request, for example), and immediately reads a separate packet off the input stream to get that body.&lt;/blockquote&gt;Here I was &lt;em&gt;requesting&lt;/em&gt; the first block. Anyway, a quick and easy fix.&lt;br /&gt;
&lt;br /&gt;
&lt;code&gt;ajp-wsgi&lt;/code&gt; is moving along... and actually, development has slowed down immensely (a marked sign of stability?). I&#039;ve converted all Python WSGI applications on my server to use it now. It may just be psychological, but I &lt;em&gt;do&lt;/em&gt; notice application responses being a bit snappier. But who knows.&lt;br /&gt;
&lt;br /&gt;
Trac seemed to be the most non-trivial to convert. It doesn&#039;t provide a ready-made application factory to create the WSGI app object. I basically had to mimic (using my config options) the operations that its main() method performed. Other applications (my own blog &amp;amp; shorten projects, moinmoin) had readily-available app objects though. And I&#039;m also glad to say that Paste Deploy-based apps are easily deployed with &lt;code&gt;ajp-wsgi&lt;/code&gt; as well.&lt;br /&gt;
&lt;br /&gt;
Anyhow, I went ahead and decoupled the C WSGI code from the AJP code today. Now the next time I&#039;m bored, I think I&#039;ll write drivers for both ends of an SCGI connection. It would be interesting if I could write that FastCGI-&gt;SCGI adapter wholly in C (using the standard C FastCGI dev kit). Actually, I guess I should check if there&#039;s already a C SCGI implementation... 
    </content:encoded>

    <pubDate>Thu, 14 Dec 2006 16:30:24 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/50-guid.html</guid>
    
</item>
<item>
    <title>ajp-wsgi</title>
    <link>http://www.saddi.com/software/news/archives/49-ajp-wsgi.html</link>
            <category>Python</category>
    
    <comments>http://www.saddi.com/software/news/archives/49-ajp-wsgi.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=49</wfw:comment>

    <slash:comments>0</slash:comments>
    <wfw:commentRss>http://www.saddi.com/software/news/rss.php?version=2.0&amp;type=comments&amp;cid=49</wfw:commentRss>
    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I moved all the WSGI stuff out of my AJP C library project into its own project: ajp-wsgi. I polished it up a bit, gave it a command-line interface, wrote a better build system, and even wrote a simple README for it. You can find it &lt;a href=&quot;ftp://ftp.saddi.com/pub/software/ajp-wsgi-0.2.tar.bz2&quot;&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Note that this is &lt;em&gt;not&lt;/em&gt; a Python extension. Rather, it is a 100% C WSGI implementation... that executes the application in an embedded Python interpreter. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/wink.png&quot; alt=&quot;;-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
It&#039;s moved beyond a proof-of-concept and is quickly becoming more and more practical. (At this moment, my personal wiki is running atop it. Maybe I&#039;ll switch my Trac sites and shorten over to it as well.) But make no mistake, it is very much alpha-quality and untested. &lt;img src=&quot;http://www.saddi.com/software/news/templates/default/img/emoticons/smile.png&quot; alt=&quot;:-)&quot; style=&quot;display: inline; vertical-align: bottom;&quot; class=&quot;emoticon&quot; /&gt;&lt;br /&gt;
&lt;br /&gt;
Future directions:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Decouple the WSGI code from AJP, opening it up to an SCGI implementation. I have &lt;strong&gt;no&lt;/strong&gt; interest in making a FastCGI version, so don&#039;t ask.&lt;/li&gt;&lt;li&gt;If not thread pooling, then maybe a thread limit at least?&lt;/li&gt;&lt;li&gt;Multi-app support. Maybe read configuration from an INI-style file (each section header would define the module:object for the app).&lt;/li&gt;&lt;li&gt;Figure out/understand the oddity with mod_proxy_ajp. It seems to stream the request body whether solicited or not. It also sends an unsolicited EOF packet. If this is the case, then mod_jk seems like a saner implementation... but maybe this is the future direction of the protocol?&lt;/li&gt;&lt;/ul&gt; 
    </content:encoded>

    <pubDate>Tue, 12 Dec 2006 23:58:04 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/49-guid.html</guid>
    
</item>

</channel>
</rss>