Hello introductions to me and one of my pet projects

David J W <[email protected]>
Newsgroups gmane.comp.python.twisted.web
Message-ID <CAPKNibjcKPpp88O=MqkbZF_S+BFoAu01ZA=muFkyRposOn+V=Q@mail.gmail.com>
Hello,
    I've been using Twisted on and off now for about four years, mostly for
personal projects and some R&D work for a few startups.  I've been a
semi-professional Python programmer for four years as well, unfortunately it
only makes up about 15-20% of my annual income.  That said for Python web
development I was rather fond of Pylons and then moved from it to CherryPy.
 With those two frameworks influencing me, I wanted a similar interface for
Twisted.Web and after a lot of trial and error I've got an alpha version
proof of concept that is simply called txWeb.
https://github.com/devdave/txWeb

Very briefly using an example from JCalderone's wonderful collection of
tutorial/examples:
http://jcalderone.livejournal.com/49707.html

Instead of doing

from twisted.web.server import Site
from twisted.web.resource import Resource
from twisted.internet import reactor

class FormPage(Resource):
       def render_GET(self, request)
            return '<html><body><form method="POST"><input name="the-field"
type="text" /></form></body></html>'

       def render_POST(self, request):
             return '<html><body>You submitted: %s</body></html>' %
(cgi.escape(request.args["the-field"][0]),)


root = Resource()
root.putChild("form", FormPage() )
factory = Site(root)
reactor.listenTCP(8880, factory)
reactor.run()


the alternative would be:

from txweb.core import Site
#from twisted.web.resource import Resource
from twisted.internet import reactor
import cgi

class Root(object):



    def form(self, request):
        return '<html><body><form action="/process" method="POST"><input
name="the-field" type="text" /></form></body></html>'
    form.exposed = True

    index = form

    def process(self, request):
        return '<html><body>You submitted: %s</body></html>' %
(cgi.escape(request.args["the-field"][0]),)
    process.exposed = True

reactor.listenTCP(8880, Site(Root()))
reactor.run()


A cleaner version of the example above is available @
https://gist.github.com/1257921

My goals with txWeb isn't to replace the twisted.web Resource mechanism but
instead provide an alternative that friendlier towards those with experience
with Pylons/CherryPy/Django while avoiding duplicating anything that
twisted.web provides ( ex. File resources can be class attributes )


That all said, any critique's or constructive input is very much welcome.
So far I know the unit-tests need to be cleaned up, inside the routing
routeRequest method the wrapper OneTimeResource is created, used, and thrown
away which is somewhat wasteful as its a mostly stateless object.  But I'm
not sure if I'm missing something big that could make txWeb unviable for
production use without some sort of major refactoring.


Thanks,
    David W.

_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.