我有一个在 Windows Server 2016 上运行的 Fast API Web 服务器(在诗歌 env shell 内)。我试图从同一子网中的另一台服务器访问它。超时了。但我可以在本地点击它。
类似地,我正在运行一个 apache Web 服务器
python3 -m http.server 8000
并且我可以成功命中它。
为什么我能够访问简单的 http.server 而不能访问 FastAPI (Uvicorn) 服务器?
Windows Server 2016 正在运行 IIS。
我的 FastAPI
main.py
文件
from fastapi import FastAPI, APIRouter
from fastapi.middleware.cors import CORSMiddleware
app = FastAPI()
app.add_middleware(
CORSMiddleware,
allow_origins=["*"],
allow_credentials=True,
allow_methods=["*"],
allow_headers=["*"],
)
@app.get('/')
def health():
return {
"Status": "Success",
"Message": "Server running"
}
启动命令 -
uvicorn main:app --reload --port 8000
。在诗歌环境 shell 中运行它。
使用Uvicorn启动FastAPI服务器时,请检查Uvicorn绑定地址。默认情况下,Uvicorn 绑定到 127.0.0.1 (localhost)。请确保它绑定到服务器的 IP 地址或 0.0.0.0 以允许来自其他计算机的连接。
启动Uvicorn时,可以指定--host参数来绑定特定的IP地址。例如:
uvicorn main:app --reload --host 0.0.0.0 --port 8000