Ответ 1
У меня есть одна и та же проблема, поэтому я решил ее с помощью watchdog.
pip install watchdog
вместе с этой командой:
watchmedo shell-command --patterns="*.py*;;*.less;*.css;*.js;*.txt;*.html" --recursive --command='kill -HUP `cat /tmp/gunicorn.pid` && echo "Reloading code" >> /tmp/gunicorn.log' ~/projectfolder
Это требует (ну, на самом деле, но я не указываю "Перезагрузка кода" в тот же файл журнала, что и хорошая вещь), что вы демонизируете процесс увольнения, что мне нравится:
gunicorn_config.py
workers = 2
worker_class = 'socketio.sgunicorn.GeventSocketIOWorker'
bind = '0.0.0.0:5000'
pidfile = '/tmp/gunicorn.pid'
debug = True
loglevel = 'debug'
errorlog = '/tmp/gunicorn.log'
daemon = True
Запустите приложение:
gunicorn run:app -c gunicorn-config.py
Просмотр журнала:
tail -f /tmp/gunicorn.log
С этого момента все должно быть перезагружено с каждым изменением вашего проекта. Это немного сложно, но поскольку у пушки с рабочим (или встроенным сокет-сервером) нет никаких возможностей перезагрузки, я должен был сделать это вот так.
Это другой подход по сравнению с решением декоратора в другом ответе, но мне нравится сохранять чистый код в соответствии с конкретными решениями для разработки. Обе делают то же самое, поэтому я думаю, вам просто нужно выбрать подходящее решение.:)
О, в качестве дополнительного бонуса вы можете использовать производственный сервер в разработке, что означает, что обе среды соответствуют друг другу.