指定主机时 FastAPI/uvicorn 不起作用

Posted

技术标签:

【中文标题】指定主机时 FastAPI/uvicorn 不起作用【英文标题】:FastAPI/uvicorn not working when specifying host 【发布时间】:2020-05-24 16:30:37 【问题描述】:

我在 Windows 机器上使用 uvicorn 在 Python 中运行 FastAPI 应用程序。当我要么时它工作正常

    在我的 Mac 上运行以下代码,或者 当我没有为 uvicorn 指定端口时(从 uvicorn.run 调用中删除 host 参数) 当我指定端口“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”时,我怎样才能让它工作?

【问题讨论】:

【参考方案1】:

在我写上面的问题时,我找到了解决方案,并认为我会分享以防其他人遇到这个问题。要让它工作,请将“http://localhost:8080”放入网络浏览器而不是“http://0.0.0.0:8080”,它会正常工作。如果您通过 python requests 包等访问端点,这也有效。

【讨论】:

这个解决方案也适用于我。但这对我来说仍然有点神奇。为什么使用 localhost 而不是 127.0.0.1 或 0.0.0.0 可以工作?

以上是关于指定主机时 FastAPI/uvicorn 不起作用的主要内容,如果未能解决你的问题,请参考以下文章

FastAPI、SQLAlchemy、pytest,无法获得 100% 的覆盖率,未正确收集

我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

使用dwr后,javaweb设置的session超时失效,web.xml和tomcat设置都不起作

多维动态数组,为啥不起作用?

UITableViewCell 样式字幕多行不起作用

当我使用 ListView 时,ListTile OnTap 正在工作。但是当我使用 ListWheelScrollView 它不起作用