29

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

4

4 回答 4

34

有几种方法可以部署 Flask 项目。使用gunicorn部署可能是最简单的,安装 gunicorn 然后:

gunicorn project:app --daemon

尽管您可能想使用主管或类似性质的东西来监视 gunicorn(至少使用--pid这样您就可以轻松地重新加载/停止 gunicorn)。

于 2011-06-13T22:36:00.900 回答
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
于 2013-12-18T17:29:01.890 回答
2

我使用 systemd 运行的 centos 为我的所有其他服务工作。所以我在我的烧瓶应用程序中使用了相同的

使用我所有的 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 路径/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 启用烧瓶服务

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

于 2019-03-04T18:36:23.870 回答
1

如果你想监督它并在重启后保持它的持久性,你可以使用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/

于 2017-09-07T19:17:18.650 回答