Привет мир flask приложение перестает работать при настройке хоста на «0.0.0.0» - PullRequest
0 голосов
/ 16 февраля 2020

Если вы инициализируете начальный проект PyCharm Flask по умолчанию или просто следуете за первым разделом, который запускает "hello world" или просто так:

from flask import Flask

app = Flask(__name__)


@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()

вы будете есть тот же код, что и у меня. И все работает нормально, пока я не изменю аргумент host на 0.0.0.0, а затем приложение запустится следующим образом:

$ python app.py
 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://0.0.0.0:5000/ (Press CTRL+C to quit)

И затем, когда я go перейду по этой ссылке, я получу ошибка неверного адреса:

Мне нужно использовать 0.0.0.0 вместо 127.0.0.1, поскольку этот IP-адрес AWS используется для открытых соединений.

Как я могу даже начать, чтобы адрес 0.0.0.0 работал локально?

Я работаю над Windows.

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

0.0.0.0 означает все IPv4-адреса, поэтому некорректно использовать его в качестве адреса назначения или адреса хоста, который обычно используется для указания всех ip-адресов источника ip для моего входящего адреса,

Так что следует либо дать 127.0 .0.1 или IP-адрес вашей машины [Ссылка] https://tools.ietf.org/html/rfc5735

1 голос
/ 16 февраля 2020

Мое предположение по данному вопросу - это брандмауэр, запрещающий соединения или какая-то политика Windows, а не проблема с IP-адресом. Возможно, прокси, настроенный для разрешения 127.0.0.0/8, но не 0.0.0.0.

0.0.0.0, является идеальным действительным IP-адресом даже для клиента. Когда вы привязываетесь к нему, это просто означает прослушивание всех IP-адресов, настроенных на хосте.

Если вы используете браузер на том же компьютере , на котором вы запускаете приложение Flask , вы можете даже просто указать его на http://0:5000, и он покажет содержимое.

Если вы запускаете приложение на AWS и пытаетесь получить доступ с удаленного компьютера, чем вам нужно указать publi c Вместо этого IP-адрес вашего экземпляра AWS, поскольку 0.0.0.0 - это не маршрутизируемый IP-адрес (как любой из зарезервированных IP-адресов частного пространства, например 10.0.0.0/8, 127.0.0.0/8, 192.168.0.0/16 и 172.16.0.0/12).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...