示例#1
0
 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
示例#2
0
 def init(cls, **kwargs):
     start = _now()
     return cls(start)
示例#3
0
 def __str__(self):
     ret = _now() - self.start
     ret = TIMER.enumerate(ret)
     return TIMER._str(**ret)
示例#4
0
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()
示例#5
0
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()