def Plug(cls, moduleName): try: module = Import(moduleName) except (Exception, SystemExit) as e: cls.unplug(moduleName) cls.plugins.discard(moduleName) result = '错误:无法加载插件 %s ,%s: %s' % (moduleName, type(e), e) ERROR(result) else: cls.unplug(moduleName) names = [] for slotName in cls.slotsTable.keys(): if hasattr(module, slotName): cls.slotsTable[slotName].append(getattr(module, slotName)) names.append(slotName) if not names: INFO(module.__dict__.keys()) result = '警告:插件 %s 中不包含任何可注册的回调函数' % moduleName WARN(result) else: cls.plugins.add(moduleName) result = '成功:加载插件 %s%s' % (moduleName, names) INFO(result) return result
def Plug(self, moduleName): self.unplug(moduleName) try: module = Import(moduleName) except Exception as e: result = '错误:无法加载插件 %s ,%s: %s' % (moduleName, type(e), e) ERROR('', exc_info=True) ERROR(result) self.unplug(moduleName) else: self.unplug(moduleName, removeJob=False) names = [] for slotName in self.slotsTable.keys(): if hasattr(module, slotName): self.slotsTable[slotName].append(getattr(module, slotName)) names.append(slotName) if (not names) and (moduleName not in self.schedTable): result = '警告:插件 %s 中没有定义回调函数或定时任务' % moduleName WARN(result) else: self.plugins[moduleName] = module jobs = self.schedTable.get(moduleName, []) jobNames = [f.func.__name__ for f in jobs] result = '成功:加载插件 %s(回调函数%s、定时任务%s)' % \ (moduleName, names, jobNames) INFO(result) if self.started and hasattr(module, 'onPlug'): _call(module.onPlug, self) return result
def Plug(cls, moduleName): cls.unplug(moduleName) try: module = Import(moduleName) except (Exception, SystemExit) as e: result = '错误:无法加载插件 %s ,%s: %s' % (moduleName, type(e), e) ERROR(result) else: cls.unplug(moduleName, removeJob=False) names = [] for slotName in cls.slotsTable.keys(): if hasattr(module, slotName): cls.slotsTable[slotName].append(getattr(module, slotName)) names.append(slotName) if (not names) and (moduleName not in cls.schedTable): result = '警告:插件 %s 中没有定义回调函数或定时任务' % moduleName WARN(result) else: cls.plugins.add(moduleName) jobs = cls.schedTable.get(moduleName, []) jobNames = [f.func.__name__ for f in jobs] result = '成功:加载插件 %s(回调函数%s、定时任务%s)' % \ (moduleName, names, jobNames) INFO(result) return result