FastAPI

一个细节

uvicorn.run(app, host="0.0.0.0", port=18019)

当使用如上 uvicorn 启动 host 一般会使用如下设置

- localhost
- 127.0.0.1
- 0.0.0.0

但是偶然发现

使用 localhost 时出现

 [Errno 99] error while attempting to bind on address ('::1', 18019, 0, 0): cannot assign requested address

同时使用 127.0.0.1 不能被局域网的其他主机(ipv4)访问

关于 localhost chatgpt的回答是

这个错误通常是由于尝试绑定到 IPv6 的地址 '::1' 导致的。IPv6 的回环地址 '::1' 在某些系统上可能无法正常工作,尤其是在没有配置 IPv6 的情况下。您可以尝试明确指定使用 IPv4,如下所示:

uvicorn.run(app, host="0.0.0.0", port=18019)

这样会将应用程序绑定到所有可用的网络接口上,包括 IPv4。如果您只希望绑定到特定的 IPv4 地址上,可以将 host 参数设置为您想要的 IPv4 地址。

关于 127.0.0.1

127.0.0.1 是一个特殊的地址,代表本地主机的回环地址,只能在本地计算机上使用。其他主机无法通过局域网访问另一台主机的 127.0.0.1。如果您希望通过局域网访问您的应用程序,请使用计算机在局域网中的实际 IP 地址,而不是 127.0.0.1。您可以使用 ipconfig(Windows)或 ifconfig(Linux/macOS)命令来查看您的计算机在局域网中的 IP 地址,并将应用程序绑定到该地址上。