On 2/9/06, Todd Thomas <caliban19@gmail.com> wrote:


On 2/8/06, Todd Thomas < caliban19@gmail.com> wrote:


On 2/8/06, David Reid < dreid@dreid.org> wrote:
Todd Thomas wrote:
> It does support wsgi, I was playing around with it. I went back to
> twisted-web, I like its lower level approach. Using http.request
> directly vs. resources is nice since I can pretty much tell exactly what
> is going on. I love the fact that you can work at an extremely low level
> in twisted-web. I hope twisted-web2 doesn't get too high level.

I don't really understand this, twisted.web _has_ resources.  They're
not very good in that one resource is expected to return another
resource to consume the next segment in the path, which makes it hard to
stop the machinery.  But if you mean what I think you mean (which I hope
you don't) and that you're working with your own server.Site then I'd
say you need twisted.web2 more than anyone, because it's resource api
will allow you to make your framework work along side others.  Which is
one of the problems with current Nevow and part of the reason
twisted.web2 was started.

-David


_______________________________________________
Twisted-web mailing list
Twisted-web@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
You just described exactly the problem I am currently having with twisted-web2. I tried to create wsgi as a root resource, however its also dependent on static files in media directory. I wasn't able to create a child object due to no matter what it passes full path to the wsgi application. So then I made it a child of a root resource, this sort of worked. But since the root path was consumed when it is passed to the child resource, when the application does a redirect, it creates the url in relation to root, not the child url. In my own application I could work around this without too much difficulty since I already know where my child is in relation to the root object.
Okay, I seemed to have solved most of my problems. Only issue having now is pysqlite2 doesn't like being called from threads seperate from the ones that created it. It could be run as a deferred in this case since it does respond pretty quick. But I am sure could solve this issue simply by changing to mysql or postgresql. The solution was stupidly simple.

from twisted.application import strports, service
from twisted.web2 import static, server, http, wsgi, resource

import sys
sys.path.append("./myproject")
from django.core.handlers.wsgi import WSGIHandler
import os
os.environ['DJANGO_SETTINGS_MODULE'] = 'myproject.settings'

class toplevel(wsgi.WSGIResource):


    def child_media(self, ctx):
        return static.File("./myproject/media")


root = toplevel(WSGIHandler())
application = service.Application("web")
site = server.Site(root)
s = strports.service('tcp:8000', http.HTTPFactory(site))
s.setServiceParent(application)


It works fairly well, or would if I wasn't testing on windows. Before you ask why windows. I have box I dual boot into and normally run secure shell to, using ubuntu linux currently. Unfortunately my computer has sims 2 on which my g/f has been playing religiously lately. So I am stuck using windows at work for right now.

ToddB
I was wrong, the css and js were cached, media directory is unreachable using this code. Which I thought it would be since wsgi.WSGIResource implements its own locate child. Any ideas of something that could work?