[Twisted-web] reduce deferred stack in nevow

Andrea Arcangeli andrea at cpushare.com
Wed Jan 19 18:36:40 MST 2005


This is mostly a cleanup since I doubt you can measure any improvement
unless you've tons of nested dirs to lookup. It's inefficient to use
.addCallback().addErrback when addCallbacks could be used instead.

Index: nevow/rend.py
===================================================================
--- nevow/rend.py	(revision 1092)
+++ nevow/rend.py	(working copy)
@@ -511,11 +511,9 @@
             return static.Data('You posted a form to %s' % bindingName, 'text/plain'), ()
         return util.maybeDeferred(
             configurable.postForm, ctx, bindingName, args
-        ).addCallback(
-            self.onPostSuccess, request, ctx, bindingName, redirectAfterPost
-        ).addErrback(
-            self.onPostFailure, request, ctx, bindingName, redirectAfterPost
-        )
+        ).addCallbacks(self.onPostSuccess, self.onPostFailure,
+                       callbackArgs = (request, ctx, bindingName, redirectAfterPost),
+                       errbackArgs = (request, ctx, bindingName, redirectAfterPost))
 
     def onPostSuccess(self, result, request, ctx, bindingName, redirectAfterPost):
         if result is None:
Index: nevow/appserver.py
===================================================================
--- nevow/appserver.py	(revision 1092)
+++ nevow/appserver.py	(working copy)
@@ -147,21 +147,16 @@
 
         return self.site.getPageContextForRequestContext(
             requestContext
-        ).addErrback(
-            processingFailed, self, requestContext
-        ).addCallback(
-            self.gotPageContext
-        )
+        ).addCallbacks(self.gotPageContext, processingFailed,
+                       errbackArgs = (self, requestContext))
 
     def gotPageContext(self, pageContext):
         if pageContext is not errorMarker:
             return defer.maybeDeferred(
                 pageContext.tag.renderHTTP, pageContext
-            ).addErrback(
-                processingFailed, self, pageContext
-            ).addCallback(
-                self._cbFinishRender, pageContext
-            )
+            ).addCallbacks(self._cbFinishRender, processingFailed,
+                           callbackArgs = (pageContext, ),
+                           errbackArgs = (self, pageContext))
 
     def finish(self):
         self.deferred.callback("")
@@ -291,11 +286,9 @@
 
         return defer.maybeDeferred(
             res.locateChild, ctx, path
-        ).addErrback(
-            processingFailed, request, ctx
-        ).addCallback(
-            self.handleSegment, request, path, ctx
-        )
+        ).addCallbacks(self.handleSegment, processingFailed,
+                       callbackArgs = (request, path, ctx),
+                       errbackArgs = (request, ctx))
 
 
 



More information about the Twisted-web mailing list