【问题标题】:Multiple programs in supervisor主管中的多个程序
【发布时间】:2019-02-09 05:19:02
【问题描述】:

我正在虚拟环境中部署一个 Django 应用程序,并且我正在为应用程序本身和一些 Celery 任务使用主管。当我的/etc/supervisor/conf.d/project 是这样的时候:

[program:botApp]
command = /home/ubuntu/gunicorn_start.bash;
user = ubuntu;
stdout_logfile = /home/ubuntu/logs/gunicorn_supervisor.log;
redirect_stderr = true;
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8;

它工作正常,我做sudo systemctl restart supervisor 并且我可以看到它运行正常,但是当我在同一个配置文件中添加我的第二个程序时:

[program:botApp]
command = /home/ubuntu/gunicorn_start.bash;
user = ubuntu;
stdout_logfile = /home/ubuntu/logs/gunicorn_supervisor.log;
redirect_stderr = true;
environment=LANG=en_US.UTF-8,LC_ALL=en_US.UTF-8;

[program:worker]
command=/home/ubuntu/django_env/bin/celery -A botApp worker -l info;
user=ubuntu;
numprocs=1;
stdout_logfile=/home/ubuntu/logs/celeryworker.log;
redirect_stderr = true;
autostart=true;
autorestart=true;
startsecs=10;
stopwaitsecs = 600 ;
killasgroup=true;
priority=998;

它会抛出以下错误:

● supervisor.service - Supervisor process control system for UNIX


Loaded: loaded (/lib/systemd/system/supervisor.service; enabled; vendor preset: enabled)
   Active: activating (auto-restart) (Result: exit-code) since Tue 2018-09-04 08:09:26 UTC; 12s ago
     Docs: http://supervisord.org
  Process: 21931 ExecStop=/usr/bin/supervisorctl $OPTIONS shutdown (code=exited, status=0/SUCCESS)
  Process: 21925 ExecStart=/usr/bin/supervisord -n -c /etc/supervisor/supervisord.conf (code=exited, status=2)
 Main PID: 21925 (code=exited, status=2)

Sep 04 08:09:26 ip-172-31-45-13 systemd[1]: supervisor.service: Unit entered failed state.
Sep 04 08:09:26 ip-172-31-45-13 systemd[1]: supervisor.service: Failed with result 'exit-code'.

我尝试将第二个程序更改为与第一个程序相同但名称和日志文件不同的程序,但它会引发相同的错误。与主管一起使用 2 个程序时,我需要做一些额外的事情吗?非常感谢。

【问题讨论】:

    标签: python django virtualenv supervisord systemctl


    【解决方案1】:

    自从一年多前提出这个问题以来,我们似乎很难得到这些问题的答案,但以下信息会有所帮助:

    • 您正在(或曾经)使用什么 Linux 发行版和版本; 例如、Ubuntu 18.04、CentOS 7 等?
    • 您查看过 systemd 生成的日志吗? (journalctl -xu supervisord)
      • 如果有的话,它们包含什么消息?
    • 您是否查看了由您的两个 supervisord 服务(例如/home/ubuntu/logs/celeryworker.log)生成的各个日志文件?
      • 它们包含什么(如果有)消息?

    我的直觉是journalctl -xu supervisord 的输出会告诉你你需要知道什么。或者至少让你朝着正确的方向迈出一步。

    【讨论】:

      【解决方案2】:

      创建配置文件后,您可以使用以下命令更新 Supervisor 配置并启动进程:

      sudo supervisorctl reread

      sudo supervisorctl update

      然后重启你的supervisorctl

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-10
        • 2016-12-25
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 1970-01-01
        • 2018-11-15
        • 1970-01-01
        相关资源
        最近更新 更多