def refresh_dom_mapping(self): # 调用该方法的函数,都为单独的对象实例。即不存在多线程共用该方法,故而不用加多线程锁 self.dom_mapping_by_uuid.clear() try: for dom in self.conn.listAllDomains(): self.dom_mapping_by_uuid[dom.UUIDString()] = dom except libvirt.libvirtError as e: # 尝试重连 Libvirtd logger.warn(e.message) logger.warn(libvirt.virGetLastErrorMessage()) self.init_conn()
def clear_scene(self): if self.dirty_scene: self.dirty_scene = False if self.guest.gf.exists(self.guest.system_image_path): self.guest.gf.remove(self.guest.system_image_path) else: log = u'清理现场失败: 不存在的路径 --> ' + self.guest.guest_dir logger.warn(msg=log) log_emit.warn(msg=log)
def init_conn_redis(cls): """ * Added TCP Keep-alive support by passing use the socket_keepalive=True option. Finer grain control can be achieved using the socket_keepalive_options option which expects a dictionary with any of the keys (socket.TCP_KEEPIDLE, socket.TCP_KEEPCNT, socket.TCP_KEEPINTVL) and integers for values. Thanks Yossi Gottlieb. TCP_KEEPDILE 设置连接上如果没有数据发送的话,多久后发送keepalive探测分组,单位是秒 TCP_KEEPINTVL 前后两次探测之间的时间间隔,单位是秒 TCP_KEEPCNT 关闭一个非活跃连接之前的最大重试次数 """ import socket cls.r = redis.StrictRedis(host=app.config.get('redis_host', '127.0.0.1'), port=app.config.get('redis_port', 6379), db=app.config.get('redis_dbid', 0), decode_responses=True, socket_timeout=600, socket_connect_timeout=600, socket_keepalive=True, socket_keepalive_options={ socket.TCP_KEEPIDLE: 2, socket.TCP_KEEPINTVL: 5, socket.TCP_KEEPCNT: 10 }, retry_on_timeout=True) try: cls.r.ping() except redis.exceptions.ResponseError as e: logger.warn(e.message) cls.r = redis.StrictRedis( host=app.config.get('redis_host', '127.0.0.1'), port=app.config.get('redis_port', 6379), db=app.config.get('redis_dbid', 0), password=app.config.get('redis_password', ''), decode_responses=True, socket_timeout=600, socket_connect_timeout=600, socket_keepalive=True, socket_keepalive_options={ socket.TCP_KEEPIDLE: 2, socket.TCP_KEEPINTVL: 5, socket.TCP_KEEPCNT: 10 }, retry_on_timeout=True) cls.r.client_setname(ji.Common.get_hostname())
def emit2(self, _type=None, message=None): from initialize import logger if _type == LogLevel.debug.value: logger.debug(msg=message) elif _type == LogLevel.info.value: logger.info(msg=message) elif _type == LogLevel.warn.value: logger.warn(msg=message) elif _type == LogLevel.error.value: logger.error(msg=message) elif _type == LogLevel.critical.value: logger.critical(msg=message) else: logger.debug(msg=message) return self.emit(_kind=EmitKind.log.value, _type=_type, message=message)