主管中有多个程序

时间:2018-09-04 08:16:54

标签: python django virtualenv supervisord supervisor

我正在虚拟环境中部署django应用程序,并且正在使用管理器负责该应用程序本身和一些芹菜任务。当我的/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重新启动超级用户,可以看到它正常运行,但是当我在同一配置文件中添加第二个程序时像这样:

[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个程序做一些额外的事情吗?非常感谢。

1 个答案:

答案 0 :(得分:2)

自从一年多前提出这个问题以来,我们是否会收到这些问题的答案似乎令人怀疑,但是以下信息对您很有帮助:

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

我的直觉是journalctl -xu supervisord的输出将告诉您您需要了解的内容。或者至少将您向正确的方向移动。