У меня есть небольшое приложение, написанное на Python с использованием Flask. Прямо сейчас я запускаю его под nohup, но я бы хотел его демонизировать. Каков правильный способ сделать это?
Как вы демонизируете приложение Flask?
Ответ 1
Существует несколько способов развертывания проекта Flask. Развертывание с помощью gunicorn может быть самым простым, установить guniororn, а затем:
gunicorn project:app --daemon
Хотя вы, вероятно, хотите использовать супервизор или что-то в этом роде для наблюдения за стрельбой (по крайней мере, используйте --pid
, чтобы вы могли легко перезагрузить/остановить пушки).
Ответ 2
Если у вас уже установлен диспетчер, я думаю, что пушкирь будет немного лишним. Ниже приведен файл flask.ini, который можно удалить в/etc/supervisord.d/(затем "superisorctl reload", чтобы перезагрузить конфигурацию и запустить процесс).
command=/opt/flask/env0/bin/python /opt/flask/developer/FlaskWebServer.py
directory=/opt/flask
redirect_stderr=true
startsecs=5
autorestart=true
stdout_logfile=/opt/flask/flask.stdout.log
Ответ 3
Если вы хотите контролировать его и поддерживать постоянную перезагрузку, вы можете использовать immortal
Вы можете называть его следующим образом:
immortal -l/var/log/your-app gunicorn project: приложение
Или через run.yml, например:
cmd: gunicorn project:app
cwd: /path/of/project
env:
DEBUG: 1
ENVIRONMENT: production
log:
file: /var/log/app.log
age: 86400 # seconds
num: 7 # int
size: 1 # MegaBytes
timestamp: true # will add timesamp to log
stderr:
file: /var/log/app-error.log
age: 86400 # seconds
num: 7 # int
size: 1 # MegaBytes
timestamp: true # will add timesamp to log
user: www
Подробнее о бессмертном: https://immortal.run/about/