【问题标题】:How to fix python uvicorn server returning "426 Upgrade Required"?如何修复 python uvicorn 服务器返回“426 需要升级”?
【发布时间】:2023-02-15 09:04:48
【问题描述】:

我有一个 python uvicorn 应用程序,它在本地对我的同事运行良好,但对我却不行.运行python src/main.py后,服务器连接到数据库并完美加载:

INFO | uvicorn.server:serve:75 - Started server process [49720]
INFO | uvicorn.lifespan.on:startup:47 - Waiting for application startup.
INFO | databases.core:connect:83 - Connected to database postgresql+asyncpg://localhost:5432/faethm_core
INFO | uvicorn.lifespan.on:startup:61 - Application startup complete.
INFO | uvicorn.server:_log_started_message:209 - Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)

但是服务器不接受任何请求。无论我从哪里发送,curl 命令、浏览器请求或 API 工具(如 Insomnia)。我总是收到相同的回复“需要升级”

例如 curl 命令:

curl --request GET \
  --url http://0.0.0.0:8000/health \
  --header 'Content-Type: application/json'

会回来

Upgrade Required

我尝试过但失败的事情

  • 重新启动我的服务器和我的电脑
  • 尝试从不同的浏览器和工具发送请求
  • 添加标头以将协议升级到 HTTP/2.0。在线文档不清楚如何执行此操作
  • 将 http 连接更改为 https

有谁知道这个问题来自哪里以及如何解决?

【问题讨论】:

    标签: python http uvicorn upgrade-required


    【解决方案1】:

    另一个应用程序使用端口 8000 作为在后台运行的守护进程。

    解决方案

    查找任何可能阻塞端口 8000 的进程

    sudo lsof -i:8080
    

    找到进程的PID并杀死它们

    kill $PID
    

    您现在应该能够正确地与 uvicorn 服务器对话。

    笔记

    • 即使您重新启动计算机,这些守护进程也可能重新启动,因此有时必须手动终止它们。
    • 原来的状态码426 Upgrade Required根本没有帮助找到问题的根源。
    • 如果端口 8000 被另一个进程或守护进程使用,uvicorn 服务器不应该启动

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-08
      • 2019-07-29
      • 2021-11-03
      • 1970-01-01
      • 2021-10-24
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      相关资源
      最近更新 更多