Я исследую, как разработать достойное веб-приложение на Python. Поскольку я не хочу, чтобы на моем пути были какие-то высокоуровневые структуры, мой выбор пал на легковесную инфраструктуру Flask . Время покажет, был ли это правильный выбор.
Итак, теперь я настроил сервер Apache с mod_wsgi, и мой тестовый сайт работает нормально. Однако я хотел бы ускорить рутинную разработку, заставив сайт автоматически перезагружаться при любых изменениях в файлах py или template, которые я делаю. Я вижу, что любые изменения в файле сайта .wsgi вызывают перезагрузку (даже без WSGIScriptReloading On в файле конфигурации apache), но мне все равно придется подталкивать его вручную (т. Е. Вставлять дополнительный перенос строки, сохранять). Есть ли способ, как вызвать перезагрузку, когда я редактирую некоторые файлы py приложения? Или я должен использовать IDE, которая обновляет файл .wsgi для меня?
flask run
также работает, так как когда выpip install flask
, в папке также устанавливается исполняемый файл флягиvenv/bin/
.Если вы говорите о средах test / dev, просто используйте опцию отладки. Он автоматически перезагрузит приложение колбы, когда произойдет изменение кода.
Или из оболочки:
http://flask.pocoo.org/docs/quickstart/#debug-mode
источник
В средах тестирования / разработки
В отладчике werkzeug уже есть функция автоматической перезагрузки, которую можно включить, выполнив одно из следующих действий:
или
Вы также можете использовать отдельный файл конфигурации для управления всеми настройками, если это необходимо. Например, я использую «settings.py» с опцией «DEBUG = True». Импортировать этот файл тоже легко;
Однако это не подходит для производственной среды.
Производственная среда
Лично я выбрал Nginx + uWSGI вместо Apache + mod_wsgi по нескольким причинам, связанным с производительностью, а также с параметрами конфигурации. Сенсорный перезарядка позволяет вам указать файл / папку, которые заставят приложение uWSGI перезагрузить только что развернутое приложение фляги.
Например, ваш скрипт обновления записывает ваши последние изменения и касается файла reload_me.txt. Ваш ini-скрипт uWSGI (который поддерживается Supervisord - очевидно) содержит где-то следующую строку:
Надеюсь, это поможет!
источник
.ini
файл конфигурации uwsgi . Если вы читаете документацию по «touch-reload», она находится в конфигурации uWSGI, а не supervisor.app.run(debug=True)
не удается, но настройка переменной среды работает.Если вы используете uwsgi, посмотрите на опцию автоперезагрузки python:
Пример uwsgi-dev-example.ini:
site_root / __ init__.py
Затем запустите:
Примечание: этот пример также включает отладчик.
Я пошел по этому пути, чтобы имитировать производство как можно ближе к моей установке nginx. Просто запустив приложение фляги со встроенным веб-сервером за nginx, вы получите ошибку шлюза.
источник
Несколько обновлений для Flask 1.0 и выше
Основной подход к горячей перезагрузке:
FLASK_ENV=development
(неFLASK_DEBUG=1
)flask run --debugger
чтобы убедиться, что он включенFLASK_APP
иFLASK_ENV
если у вас есть.env
файл в корневом каталоге проекта и установлен питон-dotenvисточник
export FLASK_ENV=development
работал на меня.app.run(debug=True)
не похоже на работу.У меня другая идея:
Первый:
Установите
python-dotenv
модуль, который будет читать локальные настройки для среды вашего проекта.Во-вторых:
Добавьте
.flaskenv
файл в каталог вашего проекта. Добавьте следующий код:Это сделано!
С этим конфигом для вашего проекта Flask, когда вы запустите
flask run
и увидите этот вывод в вашем терминале:И когда вы редактируете свой файл, просто сохраните изменения. Вы увидите, что автоперезагрузка для вас:
С дополнительным объяснением:
Конечно, вы можете вручную нажимать
export FLASK_ENV=development
каждый раз, когда вам нужно. Но использование другого файла конфигурации для обработки фактической рабочей среды кажется лучшим решением, поэтому я настоятельно рекомендую этот метод, который я использую.источник
FLASK_APP
переменную в.flaskenv
файл.Приложения Flask могут при желании выполняться в режиме отладки. В этом режиме по умолчанию включены два очень удобных модуля сервера разработки, называемых перегрузчиком и отладчиком . Когда перезагружатель включен, Flask просматривает все файлы исходного кода вашего проекта и автоматически перезагружает сервер при изменении любого из файлов.
По умолчанию режим отладки отключен. Чтобы включить его, установите
FLASK_DEBUG=1
переменную окружения перед вызовом flaskrun
:Имея сервер , работающий с перегружатель включен чрезвычайно полезен в процессе разработки, потому что каждый раз , когда вы изменить и сохранить исходный файл, сервер автоматически перезагружается и улавливает изменения.
источник
Для достижения этого в PyCharm установите раздел «Переменные среды» в:
Для Flask «запуск / отладка конфигураций».
источник
$ env: Flask_ENV = "MyAPP.py"
$ env: Flask_ENV = "разработка"
пробирка
Надо работать
источник
из терминала вы можете просто сказать
или в вашем файле
источник