Hello introductions to me and one of my pet projects
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.
Hi David, I've been trying to the same thing :-)
although keeping the Resource part, which I like (especially because it
automatically handles routing to children),
amongst many things.
Hope you'll like it too:
https://github.com/jacek99/corepost
Cheers,
Jacek
On Sun, Oct 2, 2011 at 4:49 PM, David J W wrote: 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
Twisted-web@twistedmatrix.com
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web
participants (2)
-
David J W
-
Jacek Furmankiewicz