On Tue, 17 Apr 2007 09:57:24 -0500, Jonathan Vanasco <[EMAIL PROTECTED]> wrote:

I asked this on the -python list, some suggested I re-ask here.

I'm trying to build a small daemon that does the following:

        1_ parse the uri for the key to an image
        2_ validate that key against db
                3_ if not valid, render a 404
                4_ if valid, map to an arbitrary file on the fs  ( pulled from 
db )
4b_ or check a bdb to see if its on the fs, pull a copy off of amazon's s3 otherwise and update the cachedb to note we have it

The issue that I'm having:

i originally tried doing this based on one of the chapters in the twisted o'reilley book. i ran into issues when I tried to render an image -- i couldn't figure out how to do that.

somone on twisted web suggested i not use the protocol and instead use site (http://twistedmatrix.com/projects/web/documentation/howto/ using-twistedweb.html#auto2 ). i ran into issues when trying to render status codes and add in proxy functionality.


I'm at a loss on what I should be using.  can someone offer advice ?

You are attacking this at too low a level, I think.  In essence you are
building a fixed-function web server, which is a waste of your time and
resources, because twisted already has a decent web server implementation.

Just make a .tac file for starters, something along these lines:

--------------webserver.tac-------------------------------------

# UNTESTED CODE I PULLED OUT OF MY EAR!

from twisted.application import internet, service
from twisted.python import log
from twisted.web2 import channel, http
from twisted.web2 import resource, responsecode, server


class Image(resource.LeafResource):
    def __init__(self, key):
        self.key = key

    def render(self, request)
        # Locate the image, return some kind
        # of http.Response, or a defer.Deferred


class Root(resource.Resource):
    addSlash = True

    def childFactory(self, request, name):
        return Image(name)

    def render(self, request):
        return http.Response(
            code=responsecode.OK,
            headers={},
            stream='Blah'
        )


root = Root()
site = server.Site(root)
port = 8080
application = service.Application('ImageServer')
svc = internet.TCPServer(port, channel.HTTPFactory(site))
svc.setServiceParent(application)

---------------------------------------------------------------

Run the above with twistd -noy webserver.tac.  This should be
sufficient to get you started.

Hope this helps,

L. Daniel Burr

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to