изменение кода колбы python, не отражающееся в приложении с использованием gunicorn — systemd

#python #flask

Вопрос:

Я новичок в среде python и разработал инициализацию python с помощью flask и некоторых небольших функций. И я создаю gunicorn.service и gunicorn.socket в systemd и подключаю его к nginx с помощью сокета unix. Он успешно работает. Но проблема в том, что если мы изменим код, например php или node (с наблюдателем pm2), он не сможет изменить код во время запуска приложения. В этом случае я могу видеть изменения только после выполнения systemctl restart gunicorn команды. в противном случае его не отображают измененные коды

Мой wsgi.py

 from app import app as application 

if __name__ == "__main__":
    application.run()
 

Ответ №1:

Это ожидаемо. На самом деле, при разработке для flask вы должны запустить его в режиме разработки, который подхватит ваши изменения и перезапустит приложение.

 export FLASK_APP=app
$ flask run
 

В «Быстром старте» есть несколько хороших примеров

Комментарии:

1. Как мы запускаем экспорт FLASK_ENV=разработка в gunicorn

2. Это команды оболочки, которые вы запускаете с терминала для запуска flask в режиме разработки. Первый задает переменную среды, а второй запускает встроенный сервер разработки flask. Это предназначено только для разработки и будет поддерживать обновление вашего приложения по мере внесения изменений в код, чтобы вам не нужен был gunicorn. Чтобы увидеть изменения в gunicorn, вам нужно перезапустить приложение. По сути, это то, что делает для вас сервер разработки flask в режиме разработки.