FastAPI/uvicorn не работает при указании хоста
Я запускаю приложение FastAPI на Python, используя uvicorn на машине Windows. Он отлично работает, когда я
- Запустите следующий код на моем Mac или
- Когда я не указываю порт для uvicorn (удалите
host
параметр из вызова uvicorn.run) - Когда я указываю порт 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?
4 ответа
Когда я писал вышеупомянутый вопрос, я нашел решение и подумал, что поделюсь, если кто-то еще столкнется с этим. Чтобы заставить его работать, введите " http://localhost:8080/" в веб-браузер вместо " http://0.0.0.0:8080/", и он будет работать нормально. Это также работает, если вы попадаете в конечную точку через пакет запросов python и т. Д.
Запустите это в терминале
uvicorn main:app --port 8086 --reload
0.0.0.0
технически не разрешен в качестве адреса назначения в IPv4, но может использоваться в качестве адреса источника. Реализации различаются, например, Linux рассматривает его аналогично .
При тестировании вашего веб-сервера, вероятно, лучше отправлять запросы на127.0.0.1
илиlocalhost
как ты говоришь.
Пожалуйста, как я могу сделать хост uvicorn общедоступным, чтобы я мог отправить URL-адрес api тому, кто может его протестировать.