[Web-SIG] WSGI Servers
Ian Bicking
ianb at colorstudy.com
Mon Jan 31 02:36:30 CET 2005
David Warnock wrote:
> Everyone else may disagree but it seems to me that servers are where the
> remaining big gap is for wsgi.
Oh, I'd probably agree, there's a lot of things on the server end of
WSGI which are unanswered. I guess this list that I wrote a while ago
covers some of the things like I'd live:
http://blog.ianbicking.org/an-ideal-python-web-programming-environment.html
WSGI only helps in that it separates concerns -- many of these issues
could be addressed purely on the server side, for any framework.
> What I want is to be able to pester hosting services to provide a really
> good, fast, reliable wsgi standards compliant server. I don't care if
> the application deployment is non standard, as long as there is one and
> I can do it without shell or root access. I don't care if I have not got
> plugins, filters etc standardised yet (as long as I will have some way
> to add them without shell or root access).
I think this is pretty hard, though clearly worth the effort. From a
hosting perspective:
1) It should work with a single Apache server with multiple clients.
Obviously it's better with a single server per client -- e.g., clients
can have their server run as different users (instead of everyone
sharing the nobody account). But that's not the typical way commodity
hosts are set up.
2) It should work with Apache 1.3, since that's used heavily, even if
Apache 2 has some potentially useful capabilities.
3) It shouldn't require manual server restarts or resets, edited code
needs to update itself transparently.
4) It needs some automatic monitoring, e.g., if you have an infinite
loop or some memory explosion, it has to degrade gracefully -- aborting
the request, and continue to serve other things for the client. Maybe
there'd be some collateral damage for the client -- a few other lost
requests -- but other clients can't be effected.
5) It shouldn't need complicated Apache configuration; preferably
nothing, or configuration that can go in an .htaccess file.
6) It shouldn't be horribly inefficient.
CGI is great except for 6. mod_python isn't very good for 1-4, AFAIK.
Separate threaded processes (like Zope or Webware) are problematic for 3
and 4.
In theory something FastCGI-based should be able to do this. I don't
know of any commodity hosters that support FastCGI, though maybe even
now you could use one of the CGI->FastCGI adapters, let the host kill
processes as they will but reuse processes to the degree possible. (Or,
if not FastCGI, something like it -- if you are using a CGI gateway it
doesn't matter if you are using a standard.)
Oh, but wait:
7) Not require shell access or a compiler.
There's actually a good chance you could get away with this, finding a
precompiled FastCGI CGI script that would work and uploading it to the
cgi-bin directory, though your URLs will look kind of bad (barring a
host that allows rewrite directives in .htaccess files). Still, it's
not very easy; could it be made easy with a smart enough installer?
Or, there's the possibility that FastCGI could be utilitized in a robust
enough way to handle all this, and hosts could support it with good
enough instructions and with enough user demand. In that model, maybe
you could just drop an appropriate file into your site and make it work.
Or, something other than FastCGI, maybe as an Apache module. Not
mod_python, since the idea is to run in a separate process, and mostly
do what FastCGI is supposed to do, but maybe in an easier-to-understand
and easier-to-maintain way.
Or, mod_python made to look more like mod_php, that is, more robust and
partitioned. I think this might require changes to the Python
interpreter itself, so I don't know much about feasibility. I also
don't know a lot about mod_python, so maybe it's better this way than I
think. I see it like mod_perl, which despite its age generally isn't
available on commodity hosts AFAIK.
--
Ian Bicking / ianb at colorstudy.com / http://blog.ianbicking.org
More information about the Web-SIG
mailing list