示例#1
0
 def _complete(self, out):
     assert not BaseTask._cleanup_running, "Discontinuing processing because cleanup has started."
     msg(consoleformat="%(task)r._complete(%(result)r)", task=self, result=out)
     if isinstance(out, failure.Failure):
       try:
         self._fail(out)
         self.deferred.pause()
         BaseTask._all_cleanup()
         reactor.callFromThread(reactor.stop)
         return out
       except:
         err(failure.Failure())
     if self.deferred.callbacks:
         self.deferred.addBoth(self._complete)
         return out
     parent = getattr(self, 'parent', None)
     try:
         if parent:
             parent.complete_sub(out, self)
     finally:
         if self in self.__bg_tasks:
             self.__bg_tasks.remove(self)
         if not self.__bg_tasks and reactor.running:
             reactor.stop()
     return out
示例#2
0
 def _all_cleanup(cls):
     cls._cleanup_running = True
     for task in cls.__bg_tasks:
         msg(consoleformat="cleaning %(task)r", task=task)
         try:
             task.deferred.pause()
             task._cleanup()
         except:
             err(failure.Failure())
示例#3
0
 def _fail(self, error):
     err(consoleformat=u"Task %(task)r failed with output %(output)r", task=self, output=error._taskoutput)
     err(error)
示例#4
0
 def _fail(self, error):
     err(consoleformat=u"Task %(task)r failed.", task=self)
     err(error)