<?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 - Comments</title>
    <link>http://www.saddi.com/software/news/</link>
    <description>Allan Saddi's projects blog - Announcements and ramblings about projects new and old.</description>
    <dc:language>en</dc:language>
    <generator>Serendipity 1.5.5 - http://www.s9y.org/</generator>
    <pubDate>Wed, 19 Jun 2013 06:22:16 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 - Comments - Allan Saddi's projects blog - 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>Anonymous: CASMiddleware</title>
    <link>http://www.saddi.com/software/news/archives/84-CASMiddleware.html#c296</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/84-CASMiddleware.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=84</wfw:comment>

    

    <author>nospam@example.com ()</author>
    <content:encoded>
    I approve of this middleware. &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; 
    </content:encoded>

    <pubDate>Mon, 11 Apr 2011 15:15:04 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/84-guid.html#c296</guid>
    
</item>
<item>
    <title>Steven: scgi-wsgi for Python 3.2</title>
    <link>http://www.saddi.com/software/news/archives/82-scgi-wsgi-for-Python-3.2.html#c295</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/82-scgi-wsgi-for-Python-3.2.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=82</wfw:comment>

    

    <author>nospam@example.com (Steven)</author>
    <content:encoded>
    You are awesome.  I just got it working great with:&lt;br /&gt;
&lt;br /&gt;
CherryPy 3.2, Lighttpd V1.4.26 and Python 3.2&lt;br /&gt;
&lt;br /&gt;
I documented what i did here. http://tools.cherrypy.org/wiki/ScgiWsgi&lt;br /&gt;
&lt;br /&gt;
Seems to work fine with the limited testing i&#039;ve done. 
    </content:encoded>

    <pubDate>Thu, 17 Mar 2011 09:10:49 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/82-guid.html#c295</guid>
    
</item>
<item>
    <title>Allan Saddi: Dabbling in Python 3.0</title>
    <link>http://www.saddi.com/software/news/archives/64-Dabbling-in-Python-3.0.html#c293</link>
            <category></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>

    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    Thanks for the heads up on all of these issues. Looks like I&#039;ve got a lot of catching up to do on 3.2.&lt;br /&gt;
&lt;br /&gt;
Also, the trac issue is most likely due to the switch to scgi-wsgi. That can&#039;t be good... 
    </content:encoded>

    <pubDate>Wed, 16 Mar 2011 11:04:40 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/64-guid.html#c293</guid>
    
</item>
<item>
    <title>Steven: Dabbling in Python 3.0</title>
    <link>http://www.saddi.com/software/news/archives/64-Dabbling-in-Python-3.0.html#c290</link>
            <category></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>

    

    <author>nospam@example.com (Steven)</author>
    <content:encoded>
    I tried to build ajp-wsgi-py3 but it fails with Python 3.2 because the C API was deprecated in 3.1 and removed on favour of capsules.  I would have logged it as a bug, but trac wont let me log in with trac/trac1234......&lt;br /&gt;
&lt;br /&gt;
I looked at it to see if i could fix it, but i cant work out the python c api, and cant find any good docs on it, or the changes needed to switch to capsules. sorry, or i would have sent a patch.&lt;br /&gt;
&lt;br /&gt;
I am messing with this, because its kind of needed for using cherrypy with apache or lighttpd which now supports Python 3.2 
    </content:encoded>

    <pubDate>Wed, 16 Mar 2011 07:53:58 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/64-guid.html#c290</guid>
    
</item>
<item>
    <title>Steven: Dabbling in Python 3.0</title>
    <link>http://www.saddi.com/software/news/archives/64-Dabbling-in-Python-3.0.html#c289</link>
            <category></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>

    

    <author>nospam@example.com (Steven)</author>
    <content:encoded>
    Your current setup.py does not work with Python 3.2 and is not compatible as far as i can tell with distribute.  here is one that works.  Using this, ez_setup.py is redundant.&lt;br /&gt;
&lt;br /&gt;
# Bootstrap setuptools&lt;br /&gt;
from setuptools import setup, find_packages&lt;br /&gt;
import sys&lt;br /&gt;
&lt;br /&gt;
extra = {}&lt;br /&gt;
&lt;br /&gt;
if sys.version_info &gt;= (3,):&lt;br /&gt;
    extra[&#039;use_2to3&#039;] = False&lt;br /&gt;
#    extra[&#039;convert_2to3_doctests&#039;] = [&#039;src/your/module/README.txt&#039;]&lt;br /&gt;
#    extra[&#039;use_2to3_fixers&#039;] = [&#039;your.fixers&#039;]&lt;br /&gt;
&lt;br /&gt;
setup(&lt;br /&gt;
    name = &#039;flup&#039;,&lt;br /&gt;
    version = &#039;1.0.2&#039;,&lt;br /&gt;
    packages = find_packages(),&lt;br /&gt;
    zip_safe = True,&lt;br /&gt;
    &lt;br /&gt;
    entry_points = {&lt;br /&gt;
      &#039;paste.server_runner&#039; : [&lt;br /&gt;
         &#039;ajp = flup.server.paste_factory:run_ajp_thread&#039;,&lt;br /&gt;
         &#039;fcgi = flup.server.paste_factory:run_fcgi_thread&#039;,&lt;br /&gt;
         &#039;scgi = flup.server.paste_factory:run_scgi_thread&#039;,&lt;br /&gt;
         &#039;ajp_thread = flup.server.paste_factory:run_ajp_thread&#039;,&lt;br /&gt;
         &#039;fcgi_thread = flup.server.paste_factory:run_fcgi_thread&#039;,&lt;br /&gt;
         &#039;scgi_thread = flup.server.paste_factory:run_scgi_thread&#039;,&lt;br /&gt;
         &#039;ajp_fork = flup.server.paste_factory:run_ajp_fork&#039;,&lt;br /&gt;
         &#039;fcgi_fork = flup.server.paste_factory:run_fcgi_fork&#039;,&lt;br /&gt;
         &#039;scgi_fork = flup.server.paste_factory:run_scgi_fork&#039;,&lt;br /&gt;
      ]&lt;br /&gt;
    } ,&lt;br /&gt;
    &lt;br /&gt;
    author = &#039;Allan Saddi&#039;,&lt;br /&gt;
    author_email = &#039;allan@saddi.com&#039;,&lt;br /&gt;
    description = &#039;Random assortment of WSGI servers&#039;,&lt;br /&gt;
    license = &#039;BSD&#039;,&lt;br /&gt;
    url=&#039;http://www.saddi.com/software/flup/&#039;,&lt;br /&gt;
    classifiers = [&lt;br /&gt;
    &#039;Development Status :: 5 - Production/Stable&#039;,&lt;br /&gt;
    &#039;Environment :: Web Environment&#039;,&lt;br /&gt;
    &#039;Intended Audience :: Developers&#039;,&lt;br /&gt;
    &#039;License :: OSI Approved :: BSD License&#039;,&lt;br /&gt;
    &#039;Operating System :: OS Independent&#039;,&lt;br /&gt;
    &#039;Programming Language :: Python :: 3&#039;,&lt;br /&gt;
    &#039;Topic :: Internet :: WWW/HTTP :: WSGI :: Server&#039;,&lt;br /&gt;
    &#039;Topic :: Software Development :: Libraries :: Python Modules&#039;,&lt;br /&gt;
    ],&lt;br /&gt;
) 
    </content:encoded>

    <pubDate>Wed, 16 Mar 2011 06:42:34 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/64-guid.html#c289</guid>
    
</item>
<item>
    <title>Robert Brewer: mod_proxy_scgi, why?!?!</title>
    <link>http://www.saddi.com/software/news/archives/78-mod_proxy_scgi,-why!!.html#c281</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/78-mod_proxy_scgi,-why!!.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=78</wfw:comment>

    

    <author>nospam@example.com (Robert Brewer)</author>
    <content:encoded>
    I&#039;m seeing the same behavior from mod_fastcgi (while trying to test the next release of CherryPy). You might consider adding the same tweak to fcgi.WSGIServer. 
    </content:encoded>

    <pubDate>Tue, 22 Feb 2011 09:06:26 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/78-guid.html#c281</guid>
    
</item>
<item>
    <title>Allan Saddi: scgi-wsgi?</title>
    <link>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#c278</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=76</wfw:comment>

    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I couldn&#039;t find any obvious ways to run an external server from &quot;paster serve.&quot; The main blocker is that Paste&#039;s server_runner/server_factory expect an app object to be passed in. (No way to really pass that on to an external program.)&lt;br /&gt;
&lt;br /&gt;
SCGI definitely is more efficient than AJP, mainly because AJP is packet-based. So that means for AJP to do &#039;wsgi.input&#039; stuff, there needs to be a lot of copying/slicing going on, which is where I believe the slowness is coming from.&lt;br /&gt;
&lt;br /&gt;
Even in ajp-wsgi it&#039;s unavoidable -- though I did manage to bring it down from copying &#039;wsgi.input&#039; data twice to just copying it once.&lt;br /&gt;
&lt;br /&gt;
However I&#039;m not sure if it would really account for the massive slowness in flup&#039;s AJP. I&#039;m mildly curious and will probably look into it sometime, though the pure-C WSGI servers have my attention right now. 
    </content:encoded>

    <pubDate>Sat, 22 Jan 2011 12:48:47 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/76-guid.html#c278</guid>
    
</item>
<item>
    <title>Jon: scgi-wsgi?</title>
    <link>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#c276</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=76</wfw:comment>

    

    <author>nospam@example.com (Jon)</author>
    <content:encoded>
    Regarding ajp-wsgi and paste frameworks -- what I want is the opposite, I think. I want to edit a (an?) .ini file and have paster make use of ajp-wsgi as a &#039;server&#039;. &lt;br /&gt;
&lt;br /&gt;
I don&#039;t think the threadpool/prefork stuff needs to be in C, but perhaps having part of the protocol in C wouldn&#039;t hurt. Sort of like a protocol accelerator the way SQLAlchemy can make (optional) use of C extensions for performance. &lt;br /&gt;
&lt;br /&gt;
I suspect the SCGI protocol is also much more efficient for large payloads than AJP, but I can&#039;t be sure since I&#039;m not that well-versed in AJP.&lt;br /&gt;
&lt;br /&gt;
What could be done to the Python ajp protocol layer to speed it up? 
    </content:encoded>

    <pubDate>Fri, 21 Jan 2011 11:52:43 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/76-guid.html#c276</guid>
    
</item>
<item>
    <title>Allan Saddi: scgi-wsgi?</title>
    <link>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#c275</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=76</wfw:comment>

    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I noticed that last night as well. My test program was a bit off-spec -- turns out, you&#039;re not supposed to read beyond CONTENT_LENGTH. After I fixed that, I saw that flup AJP (and I suspect FastCGI as well, since it&#039;s the same code) is horribly slow due to all the buffering/copying, while flup SCGI simply wraps the socket with a file object.&lt;br /&gt;
&lt;br /&gt;
Though ajp-wsgi is actually on-par, as far as request body uploads are concerned. So it&#039;s a problem with the Python implementation.&lt;br /&gt;
&lt;br /&gt;
I did originally think about including the ajp-wsgi stuff into flup, but it would be the opposite of what it actually is: a C program that makes calls into a Python WSGI app. Though I am curious if flup would benefit from having the transport/threadpool/prefork stuff in C.&lt;br /&gt;
&lt;br /&gt;
As for getting ajp-wsgi (and scgi-wsgi now) working with Paste or any Paste-based framework, it&#039;s a simple matter of writing a two line Python script:&lt;br /&gt;
&lt;br /&gt;
from paste.deploy import loadapp&lt;br /&gt;
app = loadapp(&#039;config:production.ini&#039;, relative_to=&#039;.&#039;)&lt;br /&gt;
&lt;br /&gt;
Save it into foo.py, then invoke ajp-wsgi like so: ajp-wsgi foo app 
    </content:encoded>

    <pubDate>Fri, 21 Jan 2011 11:07:32 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/76-guid.html#c275</guid>
    
</item>
<item>
    <title>Jon: scgi-wsgi?</title>
    <link>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#c273</link>
            <category></category>
    
    <comments>http://www.saddi.com/software/news/archives/76-scgi-wsgi.html#comments</comments>
    <wfw:comment>http://www.saddi.com/software/news/wfwcomment.php?cid=76</wfw:comment>

    

    <author>nospam@example.com (Jon)</author>
    <content:encoded>
    Regarding AJP vs SCGI performance. &lt;br /&gt;
One of the big wins with SCGI over AJP, despite AJP having persistent connections, seems to be that with large bodies SCGI is obscenely fast.&lt;br /&gt;
&lt;br /&gt;
For example, using flup (a very recent version as of this writing) and flup&#039;s AJP support, a 10MB upload took about a minute.  With flup&#039;s SCGI support, the same upload took fractions of a second.  I did not test ajp-wsgi (the C code) as it doesn&#039;t hook into paste that I&#039;m aware of.&lt;br /&gt;
&lt;br /&gt;
Might I suggest modifying ajp-wsgi in such a way that it could be included with flup as an optional performance enhancement with paste factory support? 
    </content:encoded>

    <pubDate>Fri, 21 Jan 2011 07:58:43 -0800</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/76-guid.html#c273</guid>
    
</item>
<item>
    <title>James: flup 1.0.2 released</title>
    <link>http://www.saddi.com/software/news/archives/66-flup-1.0.2-released.html#c210</link>
            <category></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>

    

    <author>nospam@example.com (James)</author>
    <content:encoded>
    Hi,&lt;br /&gt;
&lt;br /&gt;
I&#039;m forced to use the prefork method in my django-fastcgi configuration as when using the threaded method, the django fastcgi process seg-faults - again, it works fine in prefork.&lt;br /&gt;
&lt;br /&gt;
When I say it seg-faults, let me explain:&lt;br /&gt;
&lt;br /&gt;
python manage.py runfcgi host=127.0.0.1 port=8001 method=threaded daemonize=false debug=true&lt;br /&gt;
&lt;br /&gt;
is the django fastcgi startup comment I&#039;m testing with.  If I then run a benchmark test to load the server like so:&lt;br /&gt;
&lt;br /&gt;
ab -n1000 -c15 -H &#039;Host: www.example.com&#039; http://127.0.0.1/&lt;br /&gt;
&lt;br /&gt;
With nginx running on port 80 in a fastcgi configuration to port 8001, a few requests will go through successfully, but then eventually the fastcgi process segfaults.  No stack trace.&lt;br /&gt;
&lt;br /&gt;
I&#039;m hoping to use the threaded model in the future as it should use less memory than the prefork.  Anyhow, the only reason I can think of as to why this is bugging out is to do with threading issues to do with the Python GIL (http://docs.python.org/c-api/init.html#thread-state-and-the-global-interpreter-lock)&lt;br /&gt;
&lt;br /&gt;
Thoughts?  Can I provide further information to you?  Feel free to email me.  Thank you!&lt;br /&gt;
&lt;br /&gt;
James 
    </content:encoded>

    <pubDate>Wed, 10 Jun 2009 10:02:29 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/66-guid.html#c210</guid>
    
</item>
<item>
    <title>amittiwari: flup 1.0.2 released</title>
    <link>http://www.saddi.com/software/news/archives/66-flup-1.0.2-released.html#c209</link>
            <category></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>

    

    <author>nospam@example.com (amittiwari)</author>
    <content:encoded>
    marketing 
    </content:encoded>

    <pubDate>Tue, 09 Jun 2009 00:36:50 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/66-guid.html#c209</guid>
    
</item>
<item>
    <title>Jon Nelson: flup 1.0.1 released</title>
    <link>http://www.saddi.com/software/news/archives/63-flup-1.0.1-released.html#c206</link>
            <category></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>

    

    <author>nospam@example.com (Jon Nelson)</author>
    <content:encoded>
    I just saw in mercurial that you have done this.&lt;br /&gt;
Fantastic!&lt;br /&gt;
&lt;br /&gt;
I&#039;ll try to give this a test soon.&lt;br /&gt;
&lt;br /&gt;
I&#039;m really looking forward to the next release! 
    </content:encoded>

    <pubDate>Thu, 21 May 2009 11:38:04 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/63-guid.html#c206</guid>
    
</item>
<item>
    <title>Allan Saddi: flup 1.0.1 released</title>
    <link>http://www.saddi.com/software/news/archives/63-flup-1.0.1-released.html#c202</link>
            <category></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>

    

    <author>nospam@example.com (Allan Saddi)</author>
    <content:encoded>
    I don&#039;t really remember the rationale for deprecating the factories in Paste. Though I guess it makes more sense if they were packaged with flup.&lt;br /&gt;
&lt;br /&gt;
A problem is that flup&#039;s paste_factory is a one-size-fits-all deal. (And it doesn&#039;t really fit all...)&lt;br /&gt;
&lt;br /&gt;
I guess I might look into pulling Paste&#039;s factories into flup. This may cause some issues, mainly with regards to defaults. 
    </content:encoded>

    <pubDate>Mon, 18 May 2009 15:35:31 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/63-guid.html#c202</guid>
    
</item>
<item>
    <title>Jon: flup 1.0.1 released</title>
    <link>http://www.saddi.com/software/news/archives/63-flup-1.0.1-released.html#c201</link>
            <category></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>

    

    <author>nospam@example.com (Jon)</author>
    <content:encoded>
    Another problem is that PasteScript is deprecating the use of this style of factory:&lt;br /&gt;
&lt;br /&gt;
use = egg:PasteScript#flup_fcgi_thread&lt;br /&gt;
&lt;br /&gt;
However, if one does this:&lt;br /&gt;
&lt;br /&gt;
use = egg:flup#fcgi&lt;br /&gt;
(or egg:flup#fcgi_thread, they are the same)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
PasteScript#flup_fcgi_thread accepts any of&lt;br /&gt;
&lt;br /&gt;
host, port, and socket&lt;br /&gt;
(and a few others that aren&#039;t relevant here).&lt;br /&gt;
&lt;br /&gt;
If you don&#039;t specify them, then bindAddress=None is used.&lt;br /&gt;
There is no way to replicate bindAddress=None (that I can see) using flup#fcgi, a problem for any app that relies on that behavior.&lt;br /&gt;
&lt;br /&gt;
Can you think of a reasonable fix?&lt;br /&gt;
Also, when might the next flup release be? 
    </content:encoded>

    <pubDate>Mon, 18 May 2009 14:56:16 -0700</pubDate>
    <guid isPermaLink="false">http://www.saddi.com/software/news/archives/63-guid.html#c201</guid>
    
</item>

</channel>
</rss>