python类event()的实例源码

mech_vpp.py 文件源码 项目:networking-vpp 作者: openstack 项目源码 文件源码 阅读 20 收藏 0 点赞 0 评论 0
def process_secgroup_after(self, resource, event, trigger, **kwargs):
        """Callback for handling security group/rule commit-complete events

        This is when we should tell other things that a change has
        happened and has been recorded permanently in the DB.
        """
        # In Liberty, this is the only callback that's called.
        # We use our own event names, which will identify AFTER_*
        # events as the right time to commit, so in this case we
        # simply call the commit function ourselves.

        # This is not perfect - since we're not committing in one
        # transaction we can commit the secgroup change but fail to
        # propagate it to the journal and from there  to etcd on a
        # crash.  It's all we can do for Liberty as it doesn't support
        # in-transaction precommit events.
        if not PRECOMMIT:
            self.process_secgroup_commit(resource, event, trigger, **kwargs)

        # Whatever the object that caused this, we've put something
        # in the journal and now need to nudge the communicator
        self.kick()
mech_vpp.py 文件源码 项目:networking-vpp 作者: iawells 项目源码 文件源码 阅读 15 收藏 0 点赞 0 评论 0
def __init__(self):
        super(EtcdAgentCommunicator, self).__init__()

        self.etcd_client = etcd.Client()  # TODO(ijw): give this args

        # We need certain directories to exist
        self.do_etcd_mkdir(LEADIN + '/state')
        self.do_etcd_mkdir(LEADIN + '/nodes')

        # TODO(ijw): .../state/<host> lists all known hosts, and they
        # heartbeat when they're functioning

        # Get the physnets the agents know about.  This is updated
        # periodically in the return thread below.
        self.physical_networks = set()
        self._find_physnets()

        self.db_q_ev = eventlet.event.Event()

        self.return_thread = eventlet.spawn(self._return_worker)
        self.forward_thread = eventlet.spawn(self._forward_worker)
hub.py 文件源码 项目:ryu-lagopus-ext 作者: lagopus 项目源码 文件源码 阅读 27 收藏 0 点赞 0 评论 0
def __init__(self):
            self._ev = eventlet.event.Event()
            self._cond = False
hub.py 文件源码 项目:ryu-lagopus-ext 作者: lagopus 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def _broadcast(self):
            self._ev.send()
            # Since eventlet Event doesn't allow multiple send() operations
            # on an event, re-create the underlying event.
            # Note: _ev.reset() is obsolete.
            self._ev = eventlet.event.Event()
mech_vpp.py 文件源码 项目:networking-vpp 作者: openstack 项目源码 文件源码 阅读 18 收藏 0 点赞 0 评论 0
def start_threads(self, resource, event, trigger):
        LOG.debug('Starting background threads for Neutron worker')
        self.return_thread = self.make_return_worker()
        self.forward_thread = self.make_forward_worker()
hub.py 文件源码 项目:deb-ryu 作者: openstack 项目源码 文件源码 阅读 24 收藏 0 点赞 0 评论 0
def __init__(self):
            self._ev = eventlet.event.Event()
            self._cond = False
hub.py 文件源码 项目:deb-ryu 作者: openstack 项目源码 文件源码 阅读 31 收藏 0 点赞 0 评论 0
def _broadcast(self):
            self._ev.send()
            # Since eventlet Event doesn't allow multiple send() operations
            # on an event, re-create the underlying event.
            # Note: _ev.reset() is obsolete.
            self._ev = eventlet.event.Event()
mech_vpp.py 文件源码 项目:networking-vpp 作者: iawells 项目源码 文件源码 阅读 16 收藏 0 点赞 0 评论 0
def _forward_worker(self):
        LOG.debug('forward worker begun')

        session = neutron_db_api.get_session()
        while True:
            try:
                def work(k, v):
                    LOG.debug('forward worker updating etcd key %s' % k)
                    if self.do_etcd_update(k, v):
                        return True
                    else:
                        os.sleep(1) # something went bad; breathe, in
                                    # case we end up in a tight loop
                        return False

                LOG.debug('forward worker reading journal')
                while db.journal_read(session, work):
                    pass
                LOG.debug('forward worker has emptied journal')

                # work queue is now empty.
                LOG.debug("ML2_VPP(%s): worker thread pausing" % self.__class__.__name__)
                # Wait to be kicked, or (in case of emergency) run every
                # few seconds in case another thread or process dumped
                # work and failed to process it
                try:
                    with eventlet.Timeout(PARANOIA_TIME) as t:
                        # Wait for kick
                        dummy = self.db_q_ev.wait()
                        # Clear the event - we will now process till
                        # we've run out of things in the backlog
                        # so any trigger lost in this gap is harmless
                        self.db_q_ev.reset()
                        LOG.debug("ML2_VPP(%s): worker thread kicked: %s" % (self.__class__.__name__, str(dummy)))
                except eventlet.Timeout:
                    LOG.debug("ML2_VPP(%s): worker thread suspicious of a long pause" % self.__class__.__name__)
                    pass
                LOG.debug("ML2_VPP(%s): worker thread active" % self.__class__.__name__)
            except Exception, e:
                # TODO(ijw): log exception properly
                LOG.error("problems in forward worker: %s", e)
                LOG.error(traceback.format_exc())
                # never quit
                #pass

    ######################################################################


问题


面经


文章

微信
公众号

扫码关注公众号