def status(): for process in constants.APP_PROCESSES: pids = find_pid(process.get('token')) if not pids: ApiLogging.error([process.get('name'), pids], True) else: ApiLogging.info([process.get('name'), pids], True)
def __load_module(self): """ load module if not loaded :return: module instance :rtype: BaseModule """ module_path = "modules." + self.task_model.route + '.' + self.task_model.module_version + ".module" try: ApiLogging.info("import") app_module = importlib.import_module(module_path) return app_module.Module(self.task_model) except Exception as e: # TODO: save exception same as run method exception part ApiLogging.error("import exception " + str(e)) return None
def run(self): while 1: # sleep for decrease cpu usage sleep(0.01) QCoreApplication.processEvents() from_db = False if self.running_tasks.__len__() >= self.limit(): continue try: if self.items: from_db = True item = self.items.pop() else: item = self.queue.get() # type: RequestObject if item: if not from_db: task_model = TaskModel() task_model.route = item.route task_model.process_id = item.process_id task_model.status = constants.STATUS_RUNNING task_model.data = item.data task_model.call_back = item.call_back task_model.token = item.token task_model.module_version = item.module_version task_model.queue_name = self.queue_name task_model.save() else: task_model = item task = Task(task_model) if task.instance_module: task.instance_module.task_finished.connect(self.__task_finished) task.setAutoDelete(True) self.running_tasks.update({item.process_id: task}) # check cancel or pause request before start self.apply_action_by_pid(task, item.process_id) self.pool.start(task) else: # TODO: set error alarm ApiLogging.error('problem running task') except Exception as e: ApiLogging.error('process exception' + str(e)) # TODO: set error alarm continue
def run(self): try: """ run module and save result in database """ ApiLogging.info("module " + str(self.task_model.route)) self.instance_module.prepare() self.instance_module.run() self.task_model.status = constants.STATUS_SUCCESS if not self.instance_module.result: error = {'code': ResultNotSetError.get_code(), 'message': 'module not set any result before return!'} self.task_model.response_data = { 'data': to_json(self.instance_module.result), 'error': to_json(error), 'status': constants.STATUS_ERROR, 'token': self.task_model.token, 'process_id': self.task_model.process_id } except Exception as e: LogHandler.save(sys.exc_info(), process_id=self.task_model.process_id) ApiLogging.error('result exception ' + str(e)) self.task_model.status = constants.STATUS_FAILED old_exception = e.__str__() try: error = {'code': e.get_code(), 'message': e.args[0]} except Exception as e: error = {'code': 0, 'message': old_exception} self.task_model.response_data = { 'data': to_json(self.instance_module.result), 'error': to_json(error), 'status': constants.STATUS_ERROR, 'token': self.task_model.token, 'process_id': self.task_model.process_id } finally: self.task_model.save() ApiLogging.info('emit finish signal') self.instance_module.task_finished.emit(self.task_model.process_id)
current_version = 'v_' + str(database_version).replace('.', '_') for dirc in os.listdir(update_path): if dirc > current_version: updates.append(dirc) updates = sorted(updates) for update in updates: # create object from Update class and run upgrade import_file = importlib.import_module('updates.' + update + '.update') up = import_file.Update() temp_version = update.replace('v_', '') # convert dir name format to database record format database_new_version = temp_version.replace('_', '.') up.upgrade() Setting.put('api_version', database_new_version, force=True) elif float(database_version) > float(current_version): # Todo: downgrade pass else: # database version is equal to system current version ApiLogging.info('system is updated', True) if patch: try: import_file = importlib.import_module('updates.patch.patch_' + num) up = import_file.Update() up.upgrade() ApiLogging.info('patch ' + str(num) + ' applied!', True) except Exception as e: ApiLogging.error("patch exception: " + str(e), True)