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?