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

Jenkins启动Python Flask服务后无法标记成功持续加载问题求助

根因分析
  • python -m flask run属于前台阻塞型进程,启动后会持续占用当前终端会话,不会主动退出
  • 你通过SSH远程执行run.bat时,SSH会话会等待所有前台进程执行结束才会返回退出码,Jenkins任务会持续等待SSH命令返回,因此一直处于运行状态,不会标记为完成。
解决方案

方案1:修改批处理脚本后台启动(轻量快速,适合测试环境)

修改run.bat最后一行启动命令,使用Windows自带的start命令后台拉起Flask进程:

start /B python -m flask run

/B参数指定不创建新终端窗口,后台启动进程,执行后批处理脚本会直接结束,SSH会话可正常返回,Jenkins就能正常结束任务。

建议在批处理脚本开头添加旧进程清理逻辑,避免重复启动出现端口占用问题:

:: 清理占用5000端口的旧Flask进程,默认Flask端口为5000,可自行修改为你实际使用的端口
for /f "tokens=5" %%a in ('netstat -ano ^| findstr :5000') do taskkill /f /pid %%a 2>nul

方案2:注册为系统服务(稳定可靠,适合生产环境)

使用nssm工具将Flask服务注册为Windows系统服务,可实现开机自启、崩溃自动恢复,完全脱离终端会话不会阻塞SSH返回:

  1. 下载nssm工具并添加到系统环境变量
  2. 执行nssm install ContactPortalFlask,在弹出的配置界面中:
    • 路径选择你的Python可执行文件路径
    • 参数填写-m flask run
    • 工作目录填写C:\workspace\ContactPortal_Flask
  3. 将run.bat中的启动命令替换为:
net start ContactPortalFlask
补充说明

你当前使用的FLASK_ENV=development是开发模式,自带的调试服务器性能低、安全性差,不适合生产环境使用,生产环境建议搭配waitress等Windows兼容的WSGI服务器部署。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 03:30:05