Как вы демонизируете приложение Flask? - PullRequest
25 голосов
/ 14 июня 2011

У меня есть небольшое приложение, написанное на Python с использованием Flask.Сейчас я запускаю его под nohup, но я бы хотел его демонизировать.Как правильно это сделать?

Ответы [ 4 ]

31 голосов
/ 14 июня 2011

Существует несколько способов развертывания проекта Flask . Развертывание с gunicorn может быть самым простым, установите gunicorn, а затем:

gunicorn project:app --daemon

Хотя вы, вероятно, хотите использовать супервизора или что-то в этом роде для мониторинга оружейного зерна (по крайней мере, используйте --pid, чтобы вы могли легко перезарядить / остановить оружейного).

2 голосов
/ 18 декабря 2013

Если у вас уже установлен супервизор, я думаю, что gunicorn будет немного излишним.Ниже приведен файл flask.ini, который можно поместить в /etc/supervisord.d/ (затем «supervisorctl 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
0 голосов
/ 04 марта 2019

Я работаю в Centos с systemd, работающим для всех остальных моих сервисов.Таким образом, я использовал то же самое для моего приложения фляги

Создайте скрипт sh со всеми моими настройками колбы

#!/bin/bash
# flask settings
export FLASK_APP=/some_path/my_flask_app.py
export FLASK_DEBUG=0

flask run --host=0.0.0.0 --port=80

Сделайте этот скрипт исполняемым

chmod + xпуть / из / my / script.sh

Добавить службу systemd для вызова этого сценария

/ etc / systemd / system /vim flask.service

[Unit]
Description = flask python command to do useful stuff

[Service]
ExecStart = path/of/my/script.sh

[Install]
WantedBy = multi-user.target

Для завершения включите его при загрузке

systemctl enable flask.service

Подробнее о systemd: https://www.tecmint.com/create-new-service-units-in-systemd/

0 голосов
/ 07 сентября 2017

Если вы хотите контролировать его и сохранять его постоянным при перезагрузках, вы можете использовать immortal

Вы можете назвать его так:

immortal -l /var / log / your-app gunicorn проект: app

Или через 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/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...