device_monitor.py 文件源码

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

项目:networking-vpp 作者: openstack 项目源码 文件源码
def run(self):
        context = pyudev.Context()
        monitor = pyudev.Monitor.from_netlink(context)
        monitor.filter_by(subsystem='net')
        monitor.start()

        # Initial replay on existing interfaces
        for device in context.list_devices(subsystem='net'):
            self._dev_add(device.sys_name)
            self.devices.add(device.sys_name)

        while True:
            # monitor.poll() is synchronized call, which will block eventlet
            # for certain time. So use select to avoid the stall.
            ready, _, _ = select.select([monitor.fileno()], [], [], timeout=10)
            if ready:
                device = monitor.poll(timeout=1)
                if device.action == 'add':
                    self._dev_add(device.sys_name)
                    self.devices.add(device.sys_name)
                elif device.action == 'remove':
                    self._dev_del(device.sys_name)
                    self.devices.remove(device.sys_name)
            else:
                eventlet.sleep()
评论列表
文章目录


问题


面经


文章

微信
公众号

扫码关注公众号