You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows服务器上Flask服务停滞需键盘输入恢复的原因咨询

问题解决:Windows上Flask+Waitress服务停滞,按键后恢复

你的问题核心原因是Windows命令提示符的快速编辑模式,这是控制台默认特性——当误触鼠标选中窗口或触发编辑状态时,进程会被强制暂停,直到按下任意键才恢复。以下是针对性解决步骤和优化建议:

一、彻底解决停滞问题:关闭快速编辑模式

  1. 打开运行服务的命令提示符窗口,右键点击窗口标题栏,选择「属性」
  2. 切换到「选项」标签页,取消勾选「快速编辑模式」和「插入模式」
  3. 点击「确定」保存设置,重启服务后生效

二、代码与配置优化建议

1. 缓存账号信息,减少重复IO操作

你的comparePassword函数每次请求都读取admin.json文件,频繁磁盘IO可能加重服务负担,建议启动时一次性加载到内存:

import flask
from flask import request, jsonify
import json
import logging

app = flask.Flask(__name__)

# 启动时加载管理员信息到内存,避免重复读文件
with open("admin.json", "r") as f:
    admin_data = json.load(f)

@app.route('/api/v1/admin/login', methods=['GET'])
def api_Admin_User():
    username = request.args.get('username')
    password = request.args.get('password')
    if comparePassword(username, password):
        logging.info(f"admin login successful for {username}")
        return jsonify({"success": True})
    else:
        logging.warning(f"admin login failed for \"{username}\" with password \"{password}\" and IP \"{request.remote_addr}\"")
        return jsonify({"success": False})

def comparePassword(username, password):
    if not username or not password:
        return False
    username_lower = username.lower()
    if username_lower not in admin_data:
        return False
    logging.info(f"comparing password for {username}")
    return admin_data[username_lower]["password"] == password

from waitress import serve
# 增加线程数提升并发处理能力
serve(app, host="0.0.0.0", port=5000, threads=4)

2. 配置日志输出到文件

避免控制台日志缓冲带来的潜在问题,将日志写入文件更稳定:

# 在代码开头添加日志配置
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s - %(levelname)s - %(message)s',
    handlers=[
        logging.FileHandler('app.log'),
        logging.StreamHandler()  # 保留控制台输出可选
    ]
)

3. 脱离命令行运行服务

如果需要长期稳定运行,可使用nssm等工具将服务包装成Windows后台服务,彻底摆脱命令行窗口的限制。


内容的提问来源于stack exchange,提问作者YouAreBamboozled

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 15:54:24