Supervisor(’http://supervisord.org/‘)是用Python开发的一个client/server服务,是Linux/Unix系统下的一个进程管理工具,不支持Windows系统。
它可以轻松地监控、启动、停止和重新启动一个或多个进程。
[En]
It can easily monitor, start, stop, and restart one or more processes.
用Supervisor管理的进程,当一个进程意外被杀死,supervisort监听到进程死后,会自动将它重新拉起,很方便的做到进程自动恢复的功能,不再需要自己写shell脚本来控制。
centos 安装 supervisord
yum install -y supervisord
debian 安装 supervisord
apt-get install -y supervisor
安装完成后在 /etc/supervisor
目录下会有个配置文件 supervisord.conf
# cd /etc/supervisor
/etc/supervisor# ls
conf.d supervisord.conf
cat 查看内容
# cat supervisord.conf
; supervisor config file
[unix_http_server]
file=/var/run/supervisor.sock ; (the path to the socket file)
chmod=0700 ; sockef file mode (default 0700)
[supervisord]
logfile=/var/log/supervisor/supervisord.log ; (main log file;default $CWD/supervisord.log)
pidfile=/var/run/supervisord.pid ; (supervisord pidfile;default supervisord.pid)
childlogdir=/var/log/supervisor ; ('AUTO' child log dir, default $TEMP)
; the below section must remain in the config file for RPC
; (supervisorctl/web interface) to work, additional interfaces may be
; added by defining them in separate rpcinterface: sections
[rpcinterface:supervisor]
supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface
[supervisorctl]
serverurl=unix:///var/run/supervisor.sock ; use a unix:// URL for a unix socket
; The [include] section can just contain the "files" setting. This
; setting can list multiple files (separated by whitespace or
; newlines). It can also contain wildcards. The filenames are
; interpreted as relative to this file. Included files *cannot*
; include files themselves.
[include]
files = /etc/supervisor/conf.d/*.conf
我们需要在项目中使用此配置。我们可以在项目根目录中导出一个副本。
[En]
We need to use this configuration in the project. We can export a copy in the project root directory.
echo_supervisord_conf > ./supervisord.conf
supervisord.conf文件内容编写, 前面内容不用改,直接接着在后面写
例如,我需要在后台启动芹菜的工人和节拍服务。
[En]
For example, I need to start celery’s worker and beat services in the background.
; Sample supervisor config file.
;
; For more information on the config file, please see:
; http://supervisord.org/configuration.html
; 前面文档省略,不用删,接着后面写
[program:celery-worker]
command=celery -A hrun2_web worker -l info ; 管理命令,supervisor不支持后台进程
process_name=%(program_name)s
#user=root ;进程启动用户
autostart=true ;是否随supervisor启动
autorestart=true ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3 ;启动尝试次数
stderr_logfile=./celery_worker.log ;标准输出文件
stdout_logfile=./celery_worker.log ;标准输出文件
loglevel=info ;日志的级别
[program:celery-beat]
command=celery -A hrun2_web beat ; 管理命令,supervisor不支持后台进程
process_name=%(program_name)s
#user=root ;进程启动用户
autostart=true ;是否随supervisor启动
autorestart=true ;是否在挂了之后重启,意外关闭后会重启,比如kill掉!
startretries=3 ;启动尝试次数
stderr_logfile=./celery_beat.log ;标准输出文件
stdout_logfile=./celery_beat.log ;标准输出文件
loglevel=info ;日志的级别
启动服务
[En]
Start the service
supervisord -c /path/supervisord.conf
关闭该服务
[En]
Shut down the service
supervisorctl shutdown
运行该进程,启动时没有问题,不显示任何内容,如果需要关闭与关闭
[En]
Run the process, start no problem, do not display anything, if you need to shut down with shutdown
root@13107c465557:/code# supervisord -c ./supervisord.conf
root@13107c465557:/code# supervisorctl shutdown
Shut down
查看已启动的服务
[En]
View started services
supervisorctl status
执行结果如下
[En]
The execution result is as follows
root@13107c465557:/code# supervisorctl status
celery-worker RUNNING pid 234, uptime 0:00:14
celery-beat RUNNING pid 235, uptime 0:00:14
表示芹菜和芹菜节拍服务已启动
[En]
Indicates that the celery and celery-beat services are started
我们在配置里面指定了 ./celery_worker.log
文件保存运行日志,所以可以直接查看这个文件
tail -f celery_worker.log -n 30
运行它,您可以看到Worker正在运行的日志。
[En]
Run it and you can see the log that worker is running.
Original: https://www.cnblogs.com/yoyoketang/p/16458925.html
Author: 上海-悠悠
Title: python测试开发django-193.使用supervisord 后台启动celery 服务(worker/beat)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/6354/
转载文章受原作者版权保护。转载请注明原作者出处!