你如何守护Flask应用程序?

时间:2011-06-13 22:22:58

标签: python flask

我使用Flask编写了一个用Python编写的小应用程序。现在我在nohup下运行它,但我想要守护它。这样做的正确方法是什么?

4 个答案:

答案 0 :(得分:30)

There are several ways to deploy a Flask project。使用gunicorn进行部署可能是最简单的安装手枪,然后:

gunicorn project:app --daemon

虽然您可能想要使用主管或其他类似的东西来监控gunicorn(至少使用--pid,这样您就可以轻松地重新加载/停止gunicorn。)

答案 1 :(得分:2)

如果你已经安装了主管,我认为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

答案 2 :(得分:0)

如果您希望对其进行监督并在重新启动后保持不变,则可以使用immortal

您可以这样称呼它:

immortal -l / var / log / your-app gunicorn project: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/

答案 3 :(得分:0)

我是一个运行centos,其中systemd用于我的所有其他服务。 所以我在烧瓶应用程序中使用了相同的

使用我的所有Flask设置创建脚本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 path / of / 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启用flask.service

有关systemd的更多信息:https://www.tecmint.com/create-new-service-units-in-systemd/