我在Windows机器上使用uvicorn运行一个Python的FastAPI应用程序,当我执行以下任意一个选项时,它都能正常工作:
1.在我的mac上运行以下代码,或者
1.当我没有为uvicorn指定端口时(从www.example.com调用中删除host
参数uvicorn.run)
1.当我指定端口'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'时,如何才能使其工作?
2条答案
按热度按时间jutyujz01#
当我在写上面的问题时,我发现了一个解决方案,我想我应该分享一下,以防别人遇到这个问题。为了让它工作,把“http://localhost:8080“而不是“http://0.0.0.0:8080“放进网络浏览器,它会工作得很好。如果你通过python requests包等到达端点,这也是有效的。
sczxawaw2#
在终端
uvicorn main:app --port 8086 --reload
中运行此命令