예제 #1
0
    def reg(self) -> float:
        logging.debug('Still waiting')

        if self.exit_in and time_now() > self.exit_in:
            raise TerminationException('Finished')

        return 1.
예제 #2
0
    def tick(self) -> float:
        if (time_now() - self.started).total_seconds() > self.timeout:
            raise TimeoutError('Timeout')

        if all([self.has_replied_b, self.has_replied_a]):
            raise TerminationException()

        return 0.5
예제 #3
0
    def broadcast(self) -> float:
        for x in self.origins:
            c = service(BroadcastClientRPC, x)
            c.ping()

        for k in list(self.origins.keys()):
            self.origins[k] -= 1

            if self.origins[k] <= 0:
                del self.origins[k]

        logging.getLogger(__name__ + '.' + self.__class__.__name__).info(
            f'%d %s %s',
            len(self.origins_met), self.origins_met, self.origins)

        if len(self.origins_met) == 1 and len(self.origins) == 0:
            raise TerminationException()

        return 0.05
예제 #4
0
    def exit(self):
        self.has_terminated = True

        for wfpid in self.workers_fork_addrs.values():
            os.kill(wfpid, SIGTERM)

        while len(self.workers_free):
            wid = self.workers_free.pop()
            wpid = self.worker_addrs[wid]
            del self.worker_addrs[wid]

            os.kill(wpid, SIGKILL)

        self._evict_all(terminating=True)

        try:
            s = service(Broker[self.cls_req, self.cls_res], self.url_broker,
                        ClientConfig(timeout_total=1.))
            s.bk_unregister()
        except TimeoutError:
            logging.getLogger('exit').error('Could not contact broker')

        raise TerminationException()
예제 #5
0
 def exit(self):
     raise TerminationException()
예제 #6
0
    def ping(self):
        self.pings_remaining -= 1
        logging.getLogger(__name__ + '.' + self.__class__.__name__).info(f'%d', self.pings_remaining)

        if self.pings_remaining <= 0:
            raise TerminationException()
예제 #7
0
 def on_exit(self) -> bool:
     # return True if we'd like to actually exit.
     # todo: save the relevant local state here.
     raise TerminationException()
예제 #8
0
 def exit_checket(self) -> float:
     if self.should_exit:
         raise TerminationException()
     return 1
예제 #9
0
 def check_started(self):
     raise TerminationException()
예제 #10
0
 def exc(self, exc: ConnectionAbortedError) -> bool:
     raise TerminationException()
예제 #11
0
 def bk_exc(self, exc: ConnectionAbortedError) -> bool:
     trc().error('Lost connection to the worker thread')
     raise TerminationException()
예제 #12
0
 def finished_b(self, jid: RPCKey, jres: Response):
     trc('1').warning('Finished %s', self.exit_in)
     self._ack(jid)
     raise TerminationException('Finished')
예제 #13
0
 def stopper(self):
     raise TerminationException()