[Web-SIG] Accessing deeply nested multiple doc roots for WSGI apps
Jason Stitt
jason at pengale.com
Sat Oct 15 08:21:50 CEST 2005
On Oct 14, 2005, at 7:30 PM, Ben Bangert wrote:
> 1) Have a faster version of StaticURLParser, perhaps written in C
> 2) Create some sort of specification for a single static docroot
> where each WSGI egg gets its own symlink into
>
> #1 still leaves me with the WSGI app sending static data, which isn't
> ideal but so far it works and I can put the WSGI app under any URL
> prefix without a problem. It also requires me to dynamically generate
> the URL to all static information.
I agree with you that sending static files over WSGI is not ideal, in
general. Depending on the server implementation you are using it is
theoretically possible to take advantage of sendfile() for performance:
http://www.python.org/peps/pep-0333.html#optional-platform-specific-
file-handling
But if you are using FastCGI or SCGI (e.g. with Flup) instead of
running within the HTTP server itself (e.g. with mod_python), I'm not
sure if that will work. (Anybody more familiar with Flup's
capabilities, or whether any currently available server implements
that part of the PEP?)
Can you set up Squid or a similar proxy and cache static URLs? That
would probably get rid of any performance problems.
> #2 is probably easier in some respects, since if the scheme is a
> given (ie, /media/PACKAGE/VERSION/FILE.GIF) then I don't need to
> generate all the URL's and the webserver can be pointed to the static
> files root.
Personally, I wouldn't base the URL/filename on the package name and
version. What if you wanted to run multiple instances of the same
application, each with its own files? Some of them could be
dynamically generated, or maybe the header graphic just needs to be
different for each instance. And if any of these files might be
linked to externally, you don't want a changing version # in there.
The publishing engine I'm planning (yeah, I know, everyone has one
these days, don't they?) needs to be able to run as many different
sites as I want on one server. Anything to do with filesystem paths
and base URLs/hostnames will be configured per site, so I don't have
a standard naming scheme in the code itself. This does mean
"generating" URLs, but you're going to have to do that for links
between pages anyway, right?
Jason
P.S. New on this list. Is there an introduction protocol, and is it
more or less complicated than HTTP? ;-)
More information about the Web-SIG
mailing list