Доступ к Flask WS API через интранет

Вопрос или проблема

У меня есть 2 скрипта – A.py и B.py, оба являются приложениями Flask. A.py отображает веб-страницу и служит в качестве пользовательского интерфейса для получения вводимых пользователем данных. B.py содержит основную логику и имеет веб-сервис API, который вызывается A.py.

Обе программы работают как сервисы Flask на локальном компьютере с разных портов – 5001 и 5002 соответственно.

Мои сомнения –

1) Каждый раз, когда я вношу какие-либо изменения в B.py (или A.py), мне нужно останавливать и перезапускать сервисы?

2) В данный момент я запускаю оба сервиса с локального компьютера для тестирования концепции. Если я использую WSGI (подумываю о Bottle), будет ли он доступен с других компьютеров в локальной сети?

Я на Windows 10 (64-бит), Python 3.6 и Flask 1.1.1

Пожалуйста, дайте совет.


Редактирование 1) Добавлены детали о ОС и версии Python.

1) ДА. обновления не будут видны, пока вы не перезапустите ваш веб-сервис. (Оба, кстати).

2) Gunicorn хорошо работает с Flask как WSGI-приложением. Я не уверен, как ответить на ваш вопрос. Все, что я могу сказать, это то, что у меня есть веб-сервисы, развернутые в производственной среде как с Gunicorn + Flask, так и только с Flask, и они оба доступны через интернет. Единственное различие заключается в том, что Flask не предназначен для развертывания в производственной среде, а только для тестирования.

Ответ или решение

Конечно, давайте разберем ваши вопросы и предоставим полное решение.

  1. Необходимость перезапуска сервисов: Да, вы правы. Каждый раз, когда вы вносите изменения в код B.py или A.py, вам необходимо остановить и перезапустить соответствующие Flask-приложения. Это связано с тем, что Flask не автоматически обновляет код в процессе выполнения, поэтому изменения не будут видны, пока вы не перезапустите приложение. Однако, если вы используете режим отладки (debug mode), вы можете использовать app.run(debug=True) в ваших приложениях, что позволит Flask автоматически перезагружать сервер при изменении кода. Этот режим полезен для разработки, но не рекомендуется использовать в продуктивной среде.

  2. Доступность по локальной сети: Что касается вашей второй части вопроса, да, если вы развернете ваше Flask-приложение с помощью WSGI-сервера, такого как Gunicorn, ваше приложение станет доступно для других машин в вашей локальной сети. Для этого необходимо настроить сервер, чтобы он слушал соединения не только на localhost, но и на внутренних IP-адресах вашего компьютера. Например, вы можете запустить Gunicorn с командой:

    gunicorn --bind 0.0.0.0:5002 B:app

    Здесь 0.0.0.0 позволяет принимать входящие соединения по всем сетевым интерфейсам. Обратите внимание, что для доступа к вашему сервису из других машин сети необходимо проверить настройки брандмауэра Windows и убедиться, что порт 5002 (или другой используемый вами порт) открыт.

Также, если вы планируете разворачивать приложение в производственной среде, рекомендуется использовать более устойчивую архитектуру с Nginx или Apache в качестве обратного прокси-сервера для управления запросами и повышения безопасности.

Подводя итоги, вам нужно будет каждый раз перезапускать Flask-приложения для применения изменений, и вы можете сделать ваши приложения доступными по локальной сети, если используете WSGI-сервер и правильно настраиваете доступ. Удачи с вашим проектом!

Оцените материал
Добавить комментарий

Капча загружается...