【问题标题】:The --reload flag should not be used in production on Windows. Uvicorn server warning--reload 标志不应在 Windows 的生产环境中使用。 Uvicorn 服务器警告
【发布时间】:2022-06-27 13:43:21
【问题描述】:

我运行 uvicorn main:app --reload 为 Fastapi 启动服务器。服务器正在运行,但我可以在控制台上看到一个警告

WARNING:  The --reload flag should not be used in production on Windows.

对于快速 API,我的代码是

    from fastapi import FastAPI
    from fastapi.middleware.cors import CORSMiddleware


    app = FastAPI()


    origins = ["https://localhost:8080"]

    app.add_middleware(
      CORSMiddleware,
      allow_origins=origins,
      allow_credentials=True,
      allow_methods=["*"],
      allow_headers=["*"])

    @app.get("/")
    def create_todo():
      return {"Ping":"Pong"}

我想知道为什么我会看到这个...看到此警告的原因是什么...

【问题讨论】:

    标签: python-3.x webserver warnings fastapi uvicorn


    【解决方案1】:

    根据FastAPI documentation:

    警告

    如果您正在使用--reload 选项,请记住删除它。

    --reload 选项消耗更多资源,更不稳定, 等等

    它在开发过程中有很大帮助,但你不应该在开发中使用它 生产。

    因此,FastAPI 显示该警告以提醒您不要在生产中使用--reload 标志,因为服务器会消耗更多资源来定期观看用于更改所有 *.py 文件。

    但是,在您自己的机器上开发和测试您的应用程序时,使用--reload 标志是完全可以的。您还可以指定要监视哪些目录以查看 python 文件更改,以及指定一个 glob 模式来匹配将包含或排除在监视之外的文件或目录 - 请参阅 Uvicorn documentation。

    【讨论】:

    • 嘿,非常感谢您的回答...但是没有--reload 标志如何在文件更改时自动重新加载。
    • 您只需手动重启服务器即可应用更改。
    【解决方案2】:

    在应用程序的使用方式中,我们通常会谈到多个“阶段”(开发、测试、登台、生产等);在这种情况下,只有开发和生产是相关的。

    开发是指您(开发人员)在自己的计算机上运行应用程序并积极开发应用程序。在这种情况下,使用--reload 非常好——这就是它的用途!它也是实际有用的用例,因为代码会随着您开发应用程序和编写代码而改变。

    生产是指将您的应用程序提供给其他人使用的阶段,通常在次要位置 - 在服务器或其他服务上 - 代码不再主动更改(就在您完成更改并决定是时候更新其他人看到和使用的应用程序版本了)。

    当您将应用程序部署到生产环境时,代码不会在应用程序运行时主动更改 - 您在自己的计算机上进行开发,但在服务器上的代码在您上传或部署到服务器之前不会更改。在那个阶段更改代码是一个更深思熟虑的决定,当发生这种情况时,您需要在部署新代码后手动重新启动应用程序。在这种情况下,使用--reload 标志运行只会增加不必要的开销,因为服务器必须监视应用程序中的所有文件以进行更改——这些更改永远不会发生。

    如果文件数量很大,则在 Windows 上尤其如此,因此消息明确提到了 Windows。我也会跳过在其他平台上使用它,但那里的性能影响没有那么大。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-10
      • 1970-01-01
      • 2018-08-29
      • 2012-08-28
      • 1970-01-01
      相关资源
      最近更新 更多