def run_deploy() -> None: """ 定时任务,建议使用if而非for构造任务线程池 @return: """ try: # 初始化任务对象 dockers = [] # 载入定时任务权限配置 tasks = ENABLE_DEPLOY['tasks'] for docker_name, permission in tasks.items(): if permission: dockers.append({ "name": docker_name, "api": eval(f"_cd.startup_{docker_name}") }) # 无论有无权限都要装载采集器 if not tasks['collector']: dockers.append({ "name": 'collector', "api": _cd.startup_collector }) # 启动定时任务 GeventSchedule(dockers=dockers) except KeyError: logger.critical('config中枢层配置被篡改,ENABLE_DEPLOY 配置中无”tasks“键值对') exit() except NameError: logger.critical('eval()或exec()语法异常,检测变量名是否不一致。')
def run_check(self, at_once=True) -> None: """ 本地运行--检查队列残缺 # 所有类型任务的节点行为的同时发起 or 所有类型任务的节点行为按序执行,node任务之间互不影响 --v2rayChain --vNode_1 --vNode_2 --.... --ssrChain --sNode_1 --sNode_2 --... --.. -----> runtime v2rayChain IF USE vsu -> runtime allTask =====> runtime ... -----> runtime ssrChain ELSE -> runtime allTask -> Chain_1 -> Chain_2 -> ... -----> runtime node_1 IF USE go -> runtime allNode =====> runtime ... -----> runtime node_N ELSE -> runtime allNode-> the_node_1 -> the_node_2 -> ... @return: """ # 加载任务队列(广度优先) for task in self.check_seq: loads_task(task, startup=False, at_once=at_once) # 任务启动 并发执行 vsu(core=PuppetCore(), docker=Middleware.poseidon).run(self.speed_up) print('Easter eggs') # fixme 数据存储 节拍同步 if not at_once: FlexibleDistribute().start() # 任务结束 logger.success('<Gevent>任务结束') # 执行一次数据迁移 GeventSchedule().ddt()
def ddt(task_name=None): GeventSchedule().ddt(task_name)
def run_deploy(self) -> None: """ 定时采集 @return: """ GeventSchedule(go=self.speed_up).run()