Spaces:
Sleeping
Sleeping
| import time | |
| import yaml | |
| import threading | |
| import importlib | |
| from pathlib import Path | |
| import sys | |
| # import yaml # Removed yaml import | |
| import mysql.connector as pymysql # Use mysql-connector-python alias | |
| # Import config loader from todogen_LLM | |
| from todogen_LLM.config_loader import get_mysql_config | |
| # Removed local load_config function and CONFIG/MYSQL_CONFIG globals | |
| # # 配置 | |
| def load_config(): | |
| config_path = Path(__file__).parent / "todogen_LLM" / "todogen_LLM_config.yaml" | |
| with open(config_path, 'r', encoding='utf-8') as f: | |
| return yaml.safe_load(f) | |
| CONFIG = load_config() | |
| MYSQL_CONFIG = CONFIG['mysql'] | |
| # 数据库 | |
| def get_db_conn(): | |
| mysql_config = get_mysql_config() | |
| return pymysql.connect( | |
| host=mysql_config['host'], | |
| port=mysql_config.get('port', 3306), | |
| user=mysql_config['user'], | |
| password=mysql_config['password'], | |
| database=mysql_config['database'], | |
| ssl_ca=mysql_config['ssl_ca'], # path | |
| ssl_disabled=False, # enabled | |
| charset='utf8mb4', | |
| autocommit=True | |
| ) | |
| def get_latest_update_time(conn): | |
| with conn.cursor() as cursor: | |
| cursor.execute("SELECT MAX(date) FROM Messages") | |
| result = cursor.fetchone() | |
| return result[0] | |
| #filter_llm主入口 | |
| def run_filter_llm(): | |
| sys.path.append(str(Path(__file__).parent / 'filter_llm')) | |
| main = importlib.import_module('main') | |
| if hasattr(main, 'main'): | |
| main.main() | |
| else: | |
| raise RuntimeError('filter_llm.main.py未找到main函数') | |
| #todogen_LLM主入口 | |
| def run_todogen_llm(): | |
| sys.path.append(str(Path(__file__).parent / 'todogen_LLM')) | |
| todogen = importlib.import_module('todogen_llm') | |
| if hasattr(todogen, 'main'): | |
| todogen.main() | |
| else: | |
| if hasattr(todogen, 'load_formatted_data') and hasattr(todogen, 'process_data'): | |
| data = todogen.load_formatted_data() | |
| todogen.process_data(data) | |
| else: | |
| raise RuntimeError('todogen_llm.py未找到main或核心处理函数') | |
| # 调用Notify主入口 | |
| #// def run_notify(): | |
| #// sys.path.append(str(Path(__file__).parent / 'Notify')) # Path needs update if kept | |
| #// notify = importlib.import_module('notifyMain') | |
| #// if hasattr(notify, 'main'): | |
| #// notify.main() | |
| #// else: | |
| #// raise RuntimeError('Notify/notifyMain.py未找到main函数') | |
| # 监听messages表并联动 | |
| def monitor_and_orchestrate(interval=5): | |
| conn = get_db_conn() | |
| last_update = get_latest_update_time(conn) | |
| print(f"初始messages表更新时间: {last_update}") | |
| while True: | |
| time.sleep(interval) | |
| try: | |
| current_update = get_latest_update_time(conn) | |
| if current_update != last_update: | |
| print(f"检测到messages表有更新: {current_update}, 开始联动执行...") | |
| run_filter_llm() | |
| run_todogen_llm() | |
| last_update = current_update | |
| else: | |
| print("无更新,继续监听...") | |
| except Exception as e: | |
| print(f"监听或执行过程中发生错误: {e}") | |
| if __name__ == "__main__": | |
| monitor_and_orchestrate(interval=5) | |