FastAPI/uvicorn 指定主机时不工作

FastAPI/uvicorn not working when specifying host

我是 运行 Python 中的 FastAPI 应用程序,在 Windows machine 上使用 uvicorn。当我

  1. 运行下面的代码在我的mac,或者
  2. 当我没有为 uvicorn 指定端口时(从 uvicorn.run 调用中删除 host 参数)
  3. 当我指定端口“127.0.0.1”时,这是它在我根本不指定主机时使用的主机。
from fastapi import FastAPI
import uvicorn

app = FastAPI()


@app.get("/")
async def root():
    return {"message": "Hello World"}


if __name__ == '__main__':
    uvicorn.run(app, port=8080, host='0.0.0.0')

当我在浏览器上访问 0.0.0.0:8080 时,出现“无法访问此站点”的错误消息。

我已经检查了我当前的活动端口,以确保我没有在使用 netstat -ao |find /i "listening" 时发生冲突,并且 0.0.0.0:8080 未在使用中。

我当前的文件配置如下所示:

working_directory
└── app
    ├── gunicorn_conf.py
    └── main.py

我的 gunicorn_conf.py 超级简单,只是尝试设置主机和端口:

host = "0.0.0.0"
port = "8080"

当我指定主机“0.0.0.0”时,我如何才能让它工作?

当我写上面的问题时,我找到了解决方案,并认为我会分享以防其他人遇到这个问题。要让它工作,请输入“http://localhost:8080" into the web browser instead of "http://0.0.0.0:8080”,它会正常工作。如果您通过 python 请求包等访问端点,这也有效。

运行 这在终端 uvicorn main:app --port 8086 --reload