Ejemplo n.º 1
0
 def _dispatch(self, job):
     try:
         result = utils.flexapply(getattr(job.target, job.method), job.args, job.kwargs)
     except (KeyboardInterrupt, SystemExit):
         raise
     except:
         etype, evalue, etraceback = exc_info()
         result = ExceptionResponse(etype, evalue, etraceback)
         self._log_exc(etype, evalue, etraceback)
     job.signal('done').emit(result)
Ejemplo n.º 2
0
 def wrapped(*args, **kwargs):
     self = args[0]
     if self.l_thread != current_thread():
         task = job(target=self, method=func.func_name, args=args[1:], kwargs=kwargs)
         self.schedule(task, False)
         ## to wait for the task being done would easily lead to deadlock
         ## just return the 'done' signal during the async call
         return task.signal('done')
     else:
         return utils.flexapply(func, args, kwargs)
Ejemplo n.º 3
0
 def evt_invoke(self, evt):
     assert evt.value.comp is self
     handler = getattr(self, evt.value.method)
     utils.flexapply(handler, evt.value.args, evt.value.kwargs)