[Twisted-web] Serving different resource types from the same directory

Jean-Paul Calderone exarkun at divmod.com
Sun Nov 27 10:24:30 MST 2005


On Sun, 27 Nov 2005 18:12:54 +0100, Olivier Laurent <olilau.list.1 at gmail.com> wrote:
>On dim, 27 nov 2005, at 16:18, oli wrote:
>I'm trying to serve 2 different kind of resources from the same
>directory. I can, with no problem, serve one kind or the other but not
>the two resource types at the same time.
>
>Examples abounds on the web on how to serve one kind of resources from
>subdirectory /foo and another kind from subdirectory /bar. But no
>example on how to serve different kind of resources from the same
>directory.
>
>Here is how I tried:
>
># [...]
>
>PATH = '/var/www/'
>
>pt_resource = static.File(PATH)
>pt_resource.processors = { '.pt' : PTResource }
>pt_resource.indexNames = [ 'index' + '.pt' ]
>
>rst_resource = static.File( PATH )
>rst_resource.processors = { '.rst' : RSTResource }
>rst_resource.indexNames = [ 'index' + '.rst' ]
>
>#root = Resource() # I tried this too
>root = static.File(PATH)
>
>root.putChild(PATH, pt_resource)
>root.putChild(PATH, rst_resource)
>
>reactor.listenTCP(
>        80,
>        server.Site( root )
>        )
>reactor.run( )
># this is the end
>
>What's wrong ? What did I forget ? Is it possible ?

"/var/www/" does not make sense as the first argument to putChild().  Someone would have to request "%2fvar%2fwww%2f" to get anything at that location.  Also, you cannot pass the same path to putChild() twice and expect both resources to figure out what to do.  Fortunately, you do not appear to need two resources.  I think you are looking for something like this:

  root = static.File(PATH)
  root.processors = {'.pt': PTResource, '.rst': RSTResource}
  root.indexNames = ['index.rst', 'index.pt']
  reactor.listenTCP(80, server.Site(root))
  reactor.run()

Jean-Paul



More information about the Twisted-web mailing list