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