# 引入定时任务相关
|
from scheduler.main_scheduler import MainScheduler
|
from scheduler.task_scheduler import TaskScheduler
|
from config.config import Config
|
from task.request_task import JinShanRequestTask
|
from utils.log_utils import LogUtils
|
|
|
class MainController(object):
|
"""程序主线程控制器"""
|
|
def __init__(self, debug=False) -> None:
|
self.debug = debug
|
if debug:
|
LogUtils.debug("!!!!!!当前为调试模式!!!!!!")
|
self._main_scheduler = MainScheduler()
|
self._request_task_scheduler = TaskScheduler()
|
# self._statics_task_scheduler = TaskScheduler()
|
self._config = Config()
|
self._request_task = JinShanRequestTask(debug)
|
|
def _main(self):
|
"""数据爬取任务管理"""
|
# LogUtils.info('触发轮询')
|
|
# try:
|
|
# 检查是否有新的请求配置参数
|
has_new_config = self._config.check_request_config()
|
|
# 有新配置时,创建任务或修改任务执行参数
|
if has_new_config:
|
# 判断数据爬取任务是否已经创建
|
if self._request_task_scheduler.has_request_job():
|
# 移除旧任务,添加新任务
|
self._request_task_scheduler.remove_job()
|
|
# 创建新的爬取任务
|
req_config = self._config.request_config
|
LogUtils.info(
|
f"新任务创建, 版本: {req_config.version} | 起始:{req_config.request_start_time} | 结束:{req_config.request_end_time} | 间隔: {req_config.request_interval_seconds}秒", prefix=2)
|
self._request_task.set_config(req_config)
|
self._request_task_scheduler.add_task_by_config(self._request_task.do_request_task, req_config)
|
self._request_task_scheduler.start_task()
|
# 无新配置时,跳过
|
else:
|
pass
|
# except Exception as e:
|
# LogUtils.error("主线程中断,发生未处理异常:", e)
|
|
def execute(self):
|
"""主逻辑执行"""
|
|
self._main_scheduler.add_task(self._main)
|
self._main_scheduler.start_task()
|