Пример #1
0
 def startup_collector(self):
     """
     @FIXME 修复缓存堆积问题,并将本机任务队列推向分布式消息队列
     @return:
     """
     for task_name in self.deploy_cluster:
         sailor.manage_task(class_=task_name)
Пример #2
0
 def startup_collector(self):
     """
     @FIXME 修复缓存堆积问题,并将本机任务队列推向分布式消息队列
     @return:
     """
     # --------------------------------------------------------------
     # TODO v5.4.r 版本更新
     # 将“采集器指令发起”定时任务改为无阻塞发动,尝试解决定时器任务“赶不上趟”的问题
     # --------------------------------------------------------------
     # task_queue = []
     # for task_name in self.deploy_cluster:
     #     task = gevent.spawn(sailor.manage_task, class_=task_name)
     #     task_queue.append(task)
     # gevent.joinall(task_queue)
     for task_name in self.deploy_cluster:
         sailor.manage_task(class_=task_name)
Пример #3
0
    def run(beat_sync=True, force_run=None) -> 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:
        """
        # 同步任务队列(广度优先)
        # 这是一次越权执行,无论本机是否具备collector权限都将执行一轮协程空间的创建任务
        for class_ in CRAWLER_SEQUENCE:
            sailor.manage_task(class_=class_,
                               beat_sync=beat_sync,
                               force_run=force_run)

        # FIXME 节拍同步
        if not beat_sync:
            from src.BusinessCentralLayer.middleware.subscribe_io import FlexibleDistribute
            FlexibleDistribute().start()

        # 执行一次数据迁移
        # TODO 将集群接入多哨兵模式,减轻原生数据拷贝的额外CPU资源开销
        _cd.startup_ddt_overdue()

        # 任务结束
        logger.success('<Gevent>任务结束')