def run(self): while len(self._items): item = self._items.pop(0) wfd = waitForDeferred(defer.maybeDeferred(self._work, item, *self._args, **self._kw)) yield wfd try: result = wfd.getResult() self._successCount += 1 self._lastResult = [True, result, item] self._results.append(self._lastResult) except Exception as e: self._success = False failure = getFailureFor(e) if not failure.check(RegularError): failure.printTraceback() if not self._firstError: self._firstError = (failure, item) self._lastResult = [False, failure, item] self._results.append(self._lastResult) if self._stopOnFailure: raise #yield self._results #return yield self._results
def __call__(self, *params): if self._methodPath: try: print("XML-RPC %s:" % self.__class__.__name__, self._methodPath, params) proxy = self._getProxy() proxy.queryFactory.noisy = False wfd = waitForDeferred( proxy.callRemote(self._methodPath, *params)) wfd.setRestoreContext(self.restoreContext) yield wfd result = wfd.getResult() yield result return except Exception as e: errStr = str(e) if isinstance( e, Fault) else getFailureFor(e).getTraceback() msg = "Internal XML-RPC Failed: " + self.__class__.__name__ + ":" + self._methodPath + \ str(params) + "\n" + errStr log.msg(msg) self.__class__._lastError = msg if self._alertable: Core.instance().getRPCService("alarm").notify([ msg, "<div style='color:#ff0000;font-weight:bold'>%s</div>" % escape(self.__class__._lastError).replace( "\n", "<br/>") ], ["error"]) raise else: raise InternalError("method name is not given")
def __call__(self, *params): if self._methodPath: try: print "XML-RPC %s:" % self.__class__.__name__, self._methodPath, params proxy = self._getProxy() proxy.queryFactory.noisy = False wfd = waitForDeferred(proxy.callRemote(self._methodPath, *params)) wfd.setRestoreContext(self.restoreContext) yield wfd result = wfd.getResult() yield result return except Exception as e: errStr = str(e) if isinstance(e, Fault) else getFailureFor(e).getTraceback() msg = ( "Internal XML-RPC Failed: " + self.__class__.__name__ + ":" + self._methodPath + str(params) + "\n" + errStr ) log.msg(msg) self.__class__._lastError = msg if self._alertable: Core.instance().getRPCService("alarm").notify( [ msg, "<div style='color:#ff0000;font-weight:bold'>%s</div>" % escape(self.__class__._lastError).replace("\n", "<br/>"), ], ["error"], ) raise else: raise InternalError("method name is not given")