Jack Moffitt pisze:
I just wrote a simple tool to make my AJAX app development cycle better. It's a tiny web server that serves up the current directory along side some reverse proxies. You can find the current code here:
http://github.com/metajack/tape/tree/master
In writing this I ran into a number of issues with twisted.web. I'm pretty sure some of these are bugs, but I wanted to get some feedback here before I filed them.
* HTTPFactory seems only able to log to files. It takes a path name, not a file like object. This makes it very difficult to log to stdout, as I have to override log() in my own class. This in turns means cherry picking a global out of twisted.web - fun!
When you start your application: from twisted.python import log log.startLogging(sys.stdout) Or, even better, create an Application object and use twistd(1) to start your service. Using twistd(1), you have a choice to daemonize your process or not.
* static.File, when given a directory, creates instances of itself to handle children. This code completely fails for me with when I subclassed static.File. Note that my class only has a few construction parameters, while static.File has 5. This is not documented.
http://glyph.twistedmatrix.com/2009/04/my-time-at-pycon.html """ These sessions helped to reinforce for me the need to repeat this frequently for our users: if Twisted is doing something which confuses you but seems wrong, please go ahead and file a bug on twistedmatrix.com <http://twistedmatrix.com/>. If you're wrong, and Twisted is working properly, there's still a bug, it's just a bug in the documentation. If the documentation were perfect presumably you would understand why it's doing what it's doing. Even if we ultimately decide that the documentation is sufficient, by adding a bug in a tracker, you've told Google that people with your question should find the document we refer to in our comments, so there's still value. """
* The only way to stick something in the tree at an arbitrary location seems to be to walk the tree to that spot, creating dummy locations as you go.
Override locateChild
I find it extremely weird coming from several other web frameworks.
Twisted initially seems very different, no matter what framework you came from.
* Related to the above, the handling of foo vs. foo/ is pretty confusing. foo/ is considered the '' child of foo. This is pretty yuck to me. Unfortunately, I don't have any creative suggestions about how to do it better right now.
addSlash = True -- m