From a4425a1c19bd1db275f2f0eeb61d7717cb8a1df5 Mon Sep 17 00:00:00 2001 From: Cp0204 Date: Fri, 24 May 2024 13:50:40 +0800 Subject: [PATCH] =?UTF-8?q?=F0=9F=8E=A8=20=E4=BC=98=E5=8C=96=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=8F=B0=E6=97=A5=E5=BF=97=E8=BE=93=E5=87=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/run.py | 40 ++++++++++++++++++++++++++++++++-------- 1 file changed, 32 insertions(+), 8 deletions(-) diff --git a/app/run.py b/app/run.py index c4d7f9e..6c37709 100644 --- a/app/run.py +++ b/app/run.py @@ -16,6 +16,7 @@ from apscheduler.schedulers.background import BackgroundScheduler from apscheduler.triggers.cron import CronTrigger import subprocess import hashlib +import logging import json import os @@ -35,6 +36,7 @@ def get_app_ver(): python_path = "python3" if os.path.exists("/usr/bin/python3") else "python" script_path = os.environ.get("SCRIPT_PATH", "./quark_auto_save.py") config_path = os.environ.get("CONFIG_PATH", "./config/quark_config.json") +DEBUG = os.environ.get("DEBUG", False) app = Flask(__name__) app.config["APP_VERSION"] = get_app_ver() @@ -45,6 +47,15 @@ app.jinja_env.variable_start_string = "[[" app.jinja_env.variable_end_string = "]]" scheduler = BackgroundScheduler() +logging.basicConfig( + level=logging.DEBUG if DEBUG else logging.INFO, + format="[%(asctime)s][%(levelname)s] %(message)s", + datefmt="%m-%d %H:%M:%S", +) +# 过滤werkzeug日志输出 +if not DEBUG: + logging.getLogger("werkzeug").setLevel(logging.ERROR) + def gen_md5(string): md5 = hashlib.md5() @@ -96,9 +107,11 @@ def login(): if (username == request.form.get("username")) and ( password == request.form.get("password") ): + logging.info(f">>> 用户 {username} 登录成功") session["login"] = gen_md5(username + password) return redirect(url_for("index")) else: + logging.info(f">>> 用户 {username} 登录失败") return render_template("login.html", message="登录失败") return render_template("login.html", error=None) @@ -139,8 +152,13 @@ def update(): data = request.json data["webui"] = webui write_json(data) - reload_tasks() # 重新加载任务 - return "配置更新成功" + # 重新加载任务 + if reload_tasks(): + logging.info(f">>> 配置更新成功") + return "配置更新成功" + else: + logging.info(f">>> 配置更新失败") + return "配置更新失败" # 处理运行脚本请求 @@ -150,6 +168,7 @@ def run_script_now(): return "未登录" task_index = request.args.get("task_index", "") command = [python_path, "-u", script_path, config_path, task_index] + logging.info(f">>> 手动运行任务{task_index}") def generate_output(): process = subprocess.Popen( @@ -161,6 +180,7 @@ def run_script_now(): ) try: for line in iter(process.stdout.readline, ""): + logging.info(line) yield f"data: {line}\n\n" yield "data: [DONE]\n\n" finally: @@ -175,6 +195,7 @@ def run_script_now(): # 定时任务执行的函数 def run_python(args): + logging.info(f">>> 定时运行任务") os.system(f"{python_path} {args}") @@ -200,15 +221,18 @@ def reload_tasks(): elif scheduler.state == 2: scheduler.resume() scheduler_state_map = {0: "停止", 1: "运行", 2: "暂停"} - print(">>> 重载调度器") - print(f"调度状态: {scheduler_state_map[scheduler.state]}") - print(f"定时规则: {crontab}") - print(f"现有任务: {scheduler.get_jobs()}") + logging.info(">>> 重载调度器") + logging.info(f"调度状态: {scheduler_state_map[scheduler.state]}") + logging.info(f"定时规则: {crontab}") + logging.info(f"现有任务: {scheduler.get_jobs()}") + return True else: - print(">>> no crontab") + logging.info(">>> no crontab") + return False def init(): + logging.info(f">>> 初始化配置") # 检查配置文件是否存在 if not os.path.exists(config_path): if not os.path.exists(os.path.dirname(config_path)): @@ -236,4 +260,4 @@ def init(): if __name__ == "__main__": init() reload_tasks() - app.run(debug=os.environ.get("DEBUG", False), host="0.0.0.0", port=5005) + app.run(debug=DEBUG, host="0.0.0.0", port=5005)