def run_watchers(self, timeout=None): if timeout is not None: started_at = _now() result = [] for group_id in self.get_groups().get(timeout=timeout): leftover_timeout = None if timeout is not None: elapsed = max(0.0, _now() - started_at) leftover_timeout = timeout - elapsed try: group_members = self.get_members(group_id).get( timeout=leftover_timeout) except coordination.GroupNotCreated: group_members = set() else: group_members = set(group_members) # I was booted out... # # TODO(harlowja): perhaps we should have a way to notify # watchers that this has happened (the below mechanism will # also do this, but it might be better to have a separate # way when 'self' membership is lost)? if (group_id in self._joined_groups and self._member_id not in group_members): self._joined_groups.discard(group_id) old_group_members = self._group_members.get(group_id, set()) for member_id in (group_members - old_group_members): result.extend( self._hooks_join_group[group_id].run( coordination.MemberJoinedGroup(group_id, member_id))) for member_id in (old_group_members - group_members): result.extend( self._hooks_leave_group[group_id].run( coordination.MemberLeftGroup(group_id, member_id))) self._group_members[group_id] = group_members return result
def init(cls, **kwargs): start = _now() return cls(start)
def __str__(self): ret = _now() - self.start ret = TIMER.enumerate(ret) return TIMER._str(**ret)
def new_seed(): result = _array('c', str(_now())) for i in range(0, _randint(10, 20)): result.append(chr(_randint(0, 255))) return _MD5(result.tostring()).hexdigest().lower()
def new_seed(): result = _array('c',str(_now())) for i in range(0,_randint(10,20)): result.append(chr(_randint(0,255))) return _MD5(result.tostring()).hexdigest().lower()