def __schedule_group_close(self, delay, may_reduce): """Schedule the closure of the worker group after a specified delay.""" if self.__state == STATE_OPEN: self.__state = STATE_JOINING call_after_delay(delay, self.close_group, may_reduce) return True return False
def __wait_for_workers_cb(self, client, request, handler): """Schedule a callback to a given client when the result from the waitForWorkers variable is available. """ metadata = request.metadata delay = float(metadata.get('delay', self.__join_phase.duration)) thunk = lambda: self.__join_phase.wake_waiter(handler, self.num_actual_workers) call_after_delay(delay, thunk) self.__join_phase.add_waiter(handler) return True
def __schedule_grace_period_end(self, delay): """Schedule the end of the grace period for workers. Once the grace period is over, if we have no workers, we will kill the job.""" call_after_delay(delay, self.__close_grace_period)