election.py 文件源码

python
阅读 19 收藏 0 点赞 0 评论 0

项目:octopus 作者: ideascf 项目源码 文件源码
def election(self, handle):
        """

        :param handle: Election completed, will call this.
        :type handle: callable
        :return:
        """

        if not callable(handle):
            raise err.OctpProgramError('Parameter `handler` must be callable.')

        while True:
            self._election()  # do election

            if self._locker.is_acquired:
                log.debug('Got locker')
                gevent.spawn(self._heartbeat_handler)
                handle()  # call callback

                break  # everything finished
            else:
                log.debug('Get locker failed, start watcher.')
                g = gevent.spawn(self._watcher_handler)  # watch locker, election again when current locker is expired.
                g.join()  # wait master lose locker, then retry election
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号