最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Windows環(huán)境下部署Flask的完整方案

 更新時(shí)間:2026年04月26日 15:31:49   作者:冉成未來(lái)  
在 Windows 生產(chǎn)環(huán)境中部署 Flask 應(yīng)用,你需要使用 Windows 兼容的 WSGI 服務(wù)器以及 Windows 服務(wù)管理工具,本文將為你提供一套完整的 Windows 系統(tǒng) Flask 部署方案,并對(duì)比與 Linux 方式的異同,需要的朋友可以參考下

在 Windows 生產(chǎn)環(huán)境中部署 Flask 應(yīng)用,你需要使用 Windows 兼容的 WSGI 服務(wù)器(如 Waitress、Hypercorn)以及 Windows 服務(wù)管理工具(如 NSSM 或直接使用 Python 的 win32service)。本文將為你提供一套完整的 Windows 系統(tǒng) Flask 部署方案,并對(duì)比與 Linux 方式的異同。

Windows 部署 Flask 的完整方案

核心組件替換說(shuō)明

Linux 組件Windows 替代方案說(shuō)明
GunicornWaitressHypercornWaitress 是純 Python WSGI 服務(wù)器,原生支持 Windows,性能穩(wěn)定
Supervisor / SystemdNSSM(Non-Sucking Service Manager)或 Windows 任務(wù)計(jì)劃程序NSSM 可將任何 exe 包裝成 Windows 服務(wù),支持自啟、崩潰重啟
日志管理Python logging 模塊 + 文件輪轉(zhuǎn)(RotatingFileHandlerWindows 沒(méi)有內(nèi)置的 journald,建議在應(yīng)用內(nèi)配置日志

注意:Hypercorn 支持 HTTP/2 和 ASGI,但配置稍復(fù)雜;Waitress 簡(jiǎn)單穩(wěn)定,是 Flask 官方推薦的生產(chǎn)服務(wù)器之一。

一、使用 Waitress + NSSM 部署 Flask(推薦)

1. 環(huán)境準(zhǔn)備

  • Windows Server 2016+ 或 Windows 10/11(專業(yè)版/企業(yè)版)
  • Python 3.8+ 已安裝并加入 PATH
  • 你的 Flask 項(xiàng)目(例如 C:\myapp\app.py

2. 安裝依賴

在項(xiàng)目目錄創(chuàng)建虛擬環(huán)境(強(qiáng)烈推薦):

cd C:\myapp
python -m venv venv
venv\Scripts\activate
pip install flask waitress

3. 創(chuàng)建啟動(dòng)腳本

由于 NSSM 需要執(zhí)行一個(gè) .bat.exe,我們編寫(xiě)一個(gè) Python 啟動(dòng)腳本 run.py,它使用 Waitress 運(yùn)行 Flask 應(yīng)用:

# run.py
from waitress import serve
from app import app   # 假設(shè)你的 Flask 實(shí)例名為 app
if __name__ == '__main__':
    # 監(jiān)聽(tīng)所有IP的8080端口,生產(chǎn)環(huán)境建議綁定內(nèi)網(wǎng)IP并通過(guò)反向代理(如 Nginx)暴露
    serve(app, host='0.0.0.0', port=8080, threads=4)

測(cè)試腳本是否能正常運(yùn)行:

python run.py

訪問(wèn) http://localhost:8080 看到 Flask 輸出即為成功。

4. 使用 NSSM 注冊(cè)為 Windows 服務(wù)

下載 NSSM(官網(wǎng)),將 nssm.exe 放在 C:\Windows\System32 或項(xiàng)目目錄下。

以管理員身份打開(kāi)命令提示符,執(zhí)行:

nssm install FlaskApp

彈出 GUI 配置界面:

  • Path: C:\myapp\venv\Scripts\python.exe
  • Startup directory: C:\myapp
  • Arguments: run.py
  • Service name: FlaskApp(可自定義)

點(diǎn)擊 “Install service”。

然后啟動(dòng)服務(wù):

nssm start FlaskApp

檢查狀態(tài):

nssm status FlaskApp

5. 設(shè)置服務(wù)開(kāi)機(jī)自啟

NSSM 安裝的服務(wù)默認(rèn)就是“自動(dòng)”啟動(dòng)類型,可以在 Windows 服務(wù)管理器(services.msc)中確認(rèn)。

6. 查看日志與崩潰自動(dòng)重啟

NSSM 默認(rèn)會(huì)將 stdout/stderr 重定向到文件。在 NSSM GUI 的 “I/O” 選項(xiàng)卡中可以設(shè)置日志文件路徑:

  • Output (stdout): C:\myapp\logs\service-out.log
  • Error (stderr): C:\myapp\logs\service-err.log

并勾選 “Redirect error output to stdout” 簡(jiǎn)化。

在 “Process” 選項(xiàng)卡中:

  • Exit action: Restart(進(jìn)程意外退出時(shí)自動(dòng)重啟)
  • Restart delay: 5000(毫秒)

7. 常用 NSSM 命令

nssm restart FlaskApp    # 重啟服務(wù)
nssm stop FlaskApp       # 停止
nssm remove FlaskApp     # 刪除服務(wù)(需加 confirm 參數(shù))

二、使用 Waitress + 任務(wù)計(jì)劃程序(無(wú)第三方工具)

如果不想安裝 NSSM,可以用 Windows 任務(wù)計(jì)劃程序創(chuàng)建一個(gè)“不管用戶是否登錄都運(yùn)行”的任務(wù),并設(shè)置觸發(fā)器為“啟動(dòng)時(shí)”,以及“如果失敗則重啟”。缺點(diǎn)是配置較繁瑣,且重啟策略不如 NSSM 靈活。

步驟簡(jiǎn)述:

創(chuàng)建啟動(dòng)腳本 start.bat

@echo off
cd C:\myapp
call venv\Scripts\activate
python run.py

打開(kāi)“任務(wù)計(jì)劃程序” → “創(chuàng)建任務(wù)”:

  • 常規(guī):勾選“不管用戶是否登錄都運(yùn)行”,使用最高權(quán)限。
  • 觸發(fā)器:新建“啟動(dòng)時(shí)”。
  • 操作:?jiǎn)?dòng)程序 cmd.exe,參數(shù) /c "C:\myapp\start.bat"。
  • 條件:取消所有“只有在以下網(wǎng)絡(luò)連接可用時(shí)才啟動(dòng)”等選項(xiàng)。
  • 設(shè)置:勾選“如果任務(wù)失敗,按以下頻率重啟”,例如每5分鐘重啟一次,最多3次。

這種方法不推薦用于生產(chǎn)環(huán)境,因?yàn)檫M(jìn)程管理能力弱,無(wú)優(yōu)雅停止。

三、Windows 部署的注意事項(xiàng)

1. 反向代理

Windows 下同樣建議在 Waitress 前面加一層 Nginx for WindowsIIS 做反向代理,用于:

  • 提供靜態(tài)文件服務(wù)(Waitress 不擅長(zhǎng))
  • 負(fù)載均衡
  • HTTPS 卸載

Nginx for Windows 配置與 Linux 類似,下載官方 Windows 版本即可。

2. 日志輪轉(zhuǎn)

run.py 中配置 Python logging 的 RotatingFileHandler

import logging
from logging.handlers import RotatingFileHandler
handler = RotatingFileHandler('app.log', maxBytes=10*1024*1024, backupCount=5)
handler.setFormatter(logging.Formatter('%(asctime)s %(levelname)s: %(message)s'))
app.logger.addHandler(handler)
app.logger.setLevel(logging.INFO)

3. 性能調(diào)優(yōu)

  • Waitress 的 threads 參數(shù)建議設(shè)置為 CPU 核心數(shù)的 2-4 倍。
  • 如果遇到高并發(fā),可以增加 asyncore 或使用 Hypercorn 配合 uvloop(但 Windows 上 uvloop 不可用,性能不如 Linux)。

4. 防火墻與端口

確保 Windows 防火墻允許外部訪問(wèn)你的端口(例如 8080):

netsh advfirewall firewall add rule name="Flask App" dir=in action=allow protocol=TCP localport=8080

四、修改代碼后如何重新部署

使用 NSSM

由于 NSSM 只是管理進(jìn)程,修改代碼后需要重啟服務(wù)才能加載新代碼:

nssm restart FlaskApp

注意:restart 會(huì)立即殺死當(dāng)前進(jìn)程,可能導(dǎo)致正在處理的請(qǐng)求失敗。要實(shí)現(xiàn)優(yōu)雅重啟,Waitress 本身不支持熱重載,你可以在代碼中使用 watchdog 庫(kù)監(jiān)聽(tīng)文件變化并觸發(fā) sys.exit(),配合 NSSM 的自動(dòng)重啟策略,但較為復(fù)雜。更簡(jiǎn)單的做法是:在低流量時(shí)段重啟,或使用負(fù)載均衡摘除節(jié)點(diǎn)。

使用任務(wù)計(jì)劃程序

手動(dòng)停止任務(wù)(在任務(wù)計(jì)劃程序庫(kù)中右鍵結(jié)束),然后重新啟動(dòng)任務(wù)。

五、與 Linux 部署方式的異同總結(jié)

方面Linux (Gunicorn+Systemd)Windows (Waitress+NSSM)
WSGI 服務(wù)器Gunicorn(多進(jìn)程)Waitress(多線程)
進(jìn)程管理Systemd(原生,功能強(qiáng)大)NSSM(第三方,穩(wěn)定)
性能高(多進(jìn)程 + 預(yù)派生)中(Python 多線程受 GIL 限制)
優(yōu)雅重啟支持(kill -HUP不支持(需手動(dòng)重啟或變通)
日志管理journald / syslog需應(yīng)用自行配置文件輪轉(zhuǎn)
開(kāi)機(jī)自啟systemctl enableNSSM 服務(wù)默認(rèn)自啟
資源隔離cgroup / namespace無(wú)(依賴 Windows 進(jìn)程隔離)
部署復(fù)雜性中等(需理解 systemd unit)低(NSSM GUI 配置簡(jiǎn)單)

結(jié)論

  • 如果生產(chǎn)環(huán)境是 Windows Server,使用 Waitress + NSSM 是最穩(wěn)定、最接近 Linux 體驗(yàn)的方案。
  • 如果追求更高性能,建議將應(yīng)用容器化(Docker for Windows)或直接遷移到 Linux 服務(wù)器。
  • 不推薦 使用 flask run 或內(nèi)置服務(wù)器用于生產(chǎn),無(wú)論何種平臺(tái)。

六、完整示例腳本

為了方便,提供一個(gè)完整的 run.py 示例,包含日志配置和 Waitress 啟動(dòng):

import logging
from logging.handlers import RotatingFileHandler
from waitress import serve
from app import app
# 配置日志
if not app.debug:
    handler = RotatingFileHandler('logs/app.log', maxBytes=10*1024*1024, backupCount=5)
    handler.setLevel(logging.INFO)
    formatter = logging.Formatter('%(asctime)s %(levelname)s: %(message)s')
    handler.setFormatter(formatter)
    app.logger.addHandler(handler)
    app.logger.setLevel(logging.INFO)
    app.logger.info('Flask app starting')
if __name__ == '__main__':
    serve(app, host='0.0.0.0', port=8080, threads=4)

記得創(chuàng)建 logs 文件夾。

希望這份 Windows 部署教程能幫助你順利完成 Flask 項(xiàng)目的生產(chǎn)環(huán)境部署。如果你的環(huán)境可以換成 Linux,強(qiáng)烈建議使用 Linux 以獲得更成熟、高性能的工具鏈。

以上就是在Windows環(huán)境下部署Flask的完整方案的詳細(xì)內(nèi)容,更多關(guān)于Windows部署Flask方案的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • python連接字符串的方法小結(jié)

    python連接字符串的方法小結(jié)

    這篇文章主要介紹了python連接字符串的方法,實(shí)例總結(jié)了幾種常用的Python連接字符串的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • python?slack桌面自動(dòng)化開(kāi)發(fā)工具

    python?slack桌面自動(dòng)化開(kāi)發(fā)工具

    這篇文章主要為大家介紹了python?slack桌面自動(dòng)化開(kāi)發(fā)工具使用示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-08-08
  • 如何利用Tensorflow2進(jìn)行貓狗分類識(shí)別

    如何利用Tensorflow2進(jìn)行貓狗分類識(shí)別

    圖像分類是根據(jù)圖像的語(yǔ)義信息將不同類別圖像區(qū)分開(kāi)來(lái),是計(jì)算機(jī)視覺(jué)中重要的基本問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于如何利用Tensorflow2進(jìn)行貓狗分類識(shí)別的相關(guān)資料,需要的朋友可以參考下
    2022-06-06
  • OpenCV實(shí)現(xiàn)車輛識(shí)別和運(yùn)動(dòng)目標(biāo)檢測(cè)

    OpenCV實(shí)現(xiàn)車輛識(shí)別和運(yùn)動(dòng)目標(biāo)檢測(cè)

    本文主要介紹了OpenCV實(shí)現(xiàn)車輛識(shí)別和運(yùn)動(dòng)目標(biāo)檢測(cè),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • 詳解用Python實(shí)現(xiàn)自動(dòng)化監(jiān)控遠(yuǎn)程服務(wù)器

    詳解用Python實(shí)現(xiàn)自動(dòng)化監(jiān)控遠(yuǎn)程服務(wù)器

    這篇文章主要介紹了用Python實(shí)現(xiàn)自動(dòng)化監(jiān)控遠(yuǎn)程服務(wù)器,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-05-05
  • Python進(jìn)程池基本概念

    Python進(jìn)程池基本概念

    這篇文章主要介紹了Python進(jìn)程池基本概念,當(dāng)創(chuàng)建的子進(jìn)程數(shù)量不多時(shí),可以直接利用多處理進(jìn)程中的進(jìn)程動(dòng)態(tài)形成需要的進(jìn)程,下文關(guān)于Python線程池的概念做詳細(xì)介紹,需要的小伙伴可以參考一下
    2022-03-03
  • python xlsxwriter創(chuàng)建excel圖表的方法

    python xlsxwriter創(chuàng)建excel圖表的方法

    這篇文章主要為大家詳細(xì)介紹了python xlsxwriter創(chuàng)建excel圖表的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • Python在pycharm中使用environment.ylm文件配置虛擬環(huán)境的過(guò)程

    Python在pycharm中使用environment.ylm文件配置虛擬環(huán)境的過(guò)程

    environment.yml這個(gè)文件主要就是用來(lái)保存當(dāng)前的程序運(yùn)行環(huán)境,可以理解成pythonrequirementstxt的存在更加方便一些,這篇文章主要介紹了Python在pycharm中使用environment.ylm文件配置虛擬環(huán)境的過(guò)程
    2025-11-11
  • 解決python xx.py文件點(diǎn)擊完之后一閃而過(guò)的問(wèn)題

    解決python xx.py文件點(diǎn)擊完之后一閃而過(guò)的問(wèn)題

    今天小編就為大家分享一篇解決python xx.py文件點(diǎn)擊完之后一閃而過(guò)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • python如何爬取網(wǎng)站數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化

    python如何爬取網(wǎng)站數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化

    這篇文章主要介紹了python爬取拉勾網(wǎng)數(shù)據(jù)并進(jìn)行數(shù)據(jù)可視化,爬取拉勾網(wǎng)關(guān)于python職位相關(guān)的數(shù)據(jù)信息,并將爬取的數(shù)據(jù)已csv各式存入文件,然后對(duì)csv文件相關(guān)字段的數(shù)據(jù)進(jìn)行清洗,并對(duì)數(shù)據(jù)可視化展示,包括柱狀圖展示、直方圖展示,需要的朋友可以參考下
    2019-07-07

最新評(píng)論

嘉义市| 鲁山县| 江华| 西安市| 正宁县| 西乡县| 南华县| 广元市| 金湖县| 洛浦县| 佛冈县| 济阳县| 云南省| 许昌市| 温泉县| 东海县| 丹巴县| 锡林浩特市| 隆林| 凭祥市| 北辰区| 云安县| 扎囊县| 柳江县| 邯郸市| 东兴市| 堆龙德庆县| 济源市| 汉源县| 邻水| 江永县| 望谟县| 紫金县| 大新县| 正安县| 绍兴市| 南京市| 江都市| 滦南县| 绍兴县| 青河县|