简体   繁体   中英

FastAPI/uvicorn not working when specifying host

I'm running a FastAPI app in Python using uvicorn on a Windows machine. It works fine when I either

  1. Run the following code on my mac, or
  2. When I don't specify the port for uvicorn (remove the host parameter from the uvicorn.run call)
  3. When I specify port '127.0.0.1', which is the host it uses when I don't specify a host at all.
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')

When I go to 0.0.0.0:8080 on my browser, I get an error that says "This site can't be reached".

I have checked my current active ports to make sure I'm not getting a collision using netstat -ao |find /i "listening" and 0.0.0.0:8080 is not in use.

My current file configuration looks like this:

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

My gunicorn_conf.py is super simple and just tries to set the host and port:

host = "0.0.0.0"
port = "8080"

How can I get this to work when I specify host '0.0.0.0'?

As I was writing the question above, I found the solution and thought I would share in case someone else runs into this. To get it to work put " http://localhost:8080 " into the web browser instead of " http://0.0.0.0:8080 " and it will work fine. This also works if you're hitting the endpoint via the python requests package, etc.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM