【python supervisor】在服务器端,如何一直运行你的python代码

 

使用supervisor保持python进程运行

Supervisord是一个守护进程的工具,当进程意外终止或服务器掉电起来后,希望进程能够自动运行,supervisord可以很好的为我们做这件事情。同时supervisord也自带监控界面,可以通过浏览器灵活的查看、操作。

1.安装:

ubantu:sudo apt-get install supervisor 
centos: yum install supervisor

2.配置supervisord.conf文件

找到supervisord.conf配置文件,一般centos 在/etc/ 目录下,ubantu 在/etc/supervisor/ 目录下,用root权限打开该文件:

sudo vim /etc/supervisord.conf
sudo vim /etc/supervisor/supervisord.conf

3.在文件末尾添加如下几行:

[program:myProgram]
command=python /home/myname/test.py
autostart=true
autorestart=ture
stdout_logfile=/home/myname/test.log

注释:第一行的myProgram自己取个名字,表示你的项目就行 

第二行的python /home/myname/test.py表示你运行程序的命令 
第三行表示自动启动,如果值为false则表示不自动启动 
第四行表示自动重启,如果值为false则表示不自动重启 
最后一样表示程序打印出的信息都记录在该test.log文件内,是log文件

例子(我自己的项目配置)

[program:zgl]
command=python /ZGL/JunLinSoft.ZGLRemoteControl/main.py
autostart=true
autorestart=true
stdout_logfile=/ZGL/JunLinSoft.ZGLRemoteControl/zgl.txt

3.启动supervisor和程序

命令行输入:

supervisord 

 注意:做完上述步骤后,输入supervisord 可能会报错,本人就是在这里报错了以下是截图和解决方法

错误1:

安装后启动supervisor时候报错:supervisord
Starting supervisord: Traceback (most recent call last):
  File "/usr/bin/supervisord", line 2, in
    from supervisor.supervisord import main
ImportError: No module named supervisor.supervisord

问题原因:yum install supervisor 会默认使用python2.6环境  ,而我启动文件的python版本是2.7,所以我们需要在2.7的版本下安装supervisor

解决方法:用python -m pip install   supervisor

注:我这里的python 已经切换到了2.7版本下了

错误2:

【python supervisor】在服务器端,如何一直运行你的python代码_第1张图片

 

说明:大家可以看到这里报了一个error错误,上面意思就是说我的supervisord.conf配置文件缺失了【include】项

解决方法:我们重新打开这个配置文件补上缺失的【include】项就ok了,可以参考 

http://supervisord.org/configuration.html#include-section-settings

使用 include

在配置文件的最后,有一个 [include] 的配置项,跟 Nginx 一样,可以 include 某个文件夹下的所有配置文件,这样我们就可以为每个进程或相关的几个进程的配置单独写成一个文件。

[include]
files = /etc/supervisord.d/*.ini

4.常用命令

service supervisor stop #停止supervisor服务

service supervisor start #启动supervisor服务

supervisorctl shutdown #关闭所有任务

supervisorctl stop|start program_name #启动或停止服务

supervisorctl status #查看所有任务状态

 

你可能感兴趣的:(linux,supervisor,python)