Ejemplo n.º 1
0
    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()语法异常,检测变量名是否不一致。')
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
 def ddt(task_name=None):
     GeventSchedule().ddt(task_name)
Ejemplo n.º 4
0
 def run_deploy(self) -> None:
     """
     定时采集
     @return:
     """
     GeventSchedule(go=self.speed_up).run()