I'm running a FastAPI app in Python using uvicorn on a Windows machine without a frontend (e.g. Next.js, etc.) so there should NOT be any iteraction between a local frontend and backend like there is in this question. Plus the answer(s) to that question would not have solved my issue/question. That question was also asked AFTER this one so THIS QUESTION IS NOT A DUPLICATE!
It works fine when I do any one of the following options:
host
parameter from the uvicorn.run call)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.