#!/usr/bin/env python3 """ Flask 提示词大师 - 简化 Windows 服务 使用 Windows 任务计划程序实现开机自启动 """ import os import sys import time import logging import subprocess from pathlib import Path # 添加项目路径到 Python 路径 project_root = Path(__file__).parent sys.path.insert(0, str(project_root)) from src.flask_prompt_master import create_app def setup_logging(): """配置日志""" log_dir = project_root / "logs" log_dir.mkdir(exist_ok=True) logging.basicConfig( level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', handlers=[ logging.FileHandler(log_dir / "simple_service.log", encoding='utf-8'), logging.StreamHandler() ] ) return logging.getLogger(__name__) def create_startup_task(): """创建开机启动任务""" logger = setup_logging() try: # 获取当前脚本的完整路径 script_path = Path(__file__).resolve() python_path = sys.executable # 创建任务计划命令 task_name = "FlaskPromptMasterStartup" task_command = f'schtasks /create /tn "{task_name}" /tr "{python_path} {script_path}" /sc onstart /ru "SYSTEM" /f' logger.info("正在创建开机启动任务...") result = subprocess.run(task_command, shell=True, capture_output=True, text=True) if result.returncode == 0: logger.info("开机启动任务创建成功!") return True else: logger.error(f"创建任务失败: {result.stderr}") return False except Exception as e: logger.error(f"创建开机启动任务异常: {e}") return False def remove_startup_task(): """删除开机启动任务""" logger = setup_logging() try: task_name = "FlaskPromptMasterStartup" task_command = f'schtasks /delete /tn "{task_name}" /f' logger.info("正在删除开机启动任务...") result = subprocess.run(task_command, shell=True, capture_output=True, text=True) if result.returncode == 0: logger.info("开机启动任务删除成功!") return True else: logger.error(f"删除任务失败: {result.stderr}") return False except Exception as e: logger.error(f"删除开机启动任务异常: {e}") return False def start_service(): """启动服务""" logger = setup_logging() try: logger.info("正在启动 Flask 提示词大师服务...") # 设置环境变量 os.environ['FLASK_ENV'] = 'production' os.environ['PYTHONPATH'] = str(project_root) # 创建应用实例 app = create_app() # 启动服务器 logger.info("服务启动成功,监听端口 5000") logger.info("访问地址: http://localhost:5000") app.run( host='0.0.0.0', port=5000, debug=False, threaded=True, use_reloader=False ) except Exception as e: logger.error(f"服务启动失败: {e}") raise def main(): """主函数""" if len(sys.argv) == 1: # 直接启动服务 start_service() elif sys.argv[1] == "install": # 安装开机启动任务 if create_startup_task(): print("✅ 开机启动任务安装成功!") else: print("❌ 开机启动任务安装失败!") elif sys.argv[1] == "remove": # 删除开机启动任务 if remove_startup_task(): print("✅ 开机启动任务删除成功!") else: print("❌ 开机启动任务删除失败!") elif sys.argv[1] == "start": # 启动服务 start_service() else: print("用法:") print(" python simple_windows_service.py # 启动服务") print(" python simple_windows_service.py install # 安装开机启动") print(" python simple_windows_service.py remove # 删除开机启动") print(" python simple_windows_service.py start # 启动服务") if __name__ == '__main__': main()