Python3.5中有什么工具可以替代supervisor进行进程管理?
请问 python3.5 可以使用哪个工具来代替 supervisor 呢? supervisor 只支持 python2,好苦闷…(同样让人苦闷的还有 fabric …不过好在 fabric3 和 fabric 目前只差了一个小版本)
查到一个包叫做 circus,不过查看 circus 的文档上说 circus 支持到 python3.3,不知道用在 3.5 上会不会有什么问题…请问各位使用 py3.5+的使用什么工具代替 supervisor 呢
Python3.5中有什么工具可以替代supervisor进行进程管理?
装个 py2,用 py2 跑 supervisor 咯
在Python 3.5环境下,除了supervisor,确实有几个不错的进程管理工具可选。
1. systemd
如果你的系统是较新的Linux发行版(比如Ubuntu 16.04+或CentOS 7+),首推systemd。它是现在的系统和服务管理器,用来管理Python进程非常稳。你写个简单的service单元文件(比如/etc/systemd/system/myapp.service)就能搞定:
[Unit]
Description=My Python Application
[Service]
Type=simple
User=your_username
WorkingDirectory=/path/to/your/app
ExecStart=/usr/bin/python3.5 /path/to/your/app/main.py
Restart=always
[Install]
WantedBy=multi-user.target
然后sudo systemctl start myapp启动,sudo systemctl enable myapp设置开机自启。日志直接用journalctl -u myapp看,特别方便。
2. Circus
如果你想要一个和supervisor更像、功能也更丰富的Python专用工具,试试Circus。它来自Mozilla,用Python写的,通过管道管理进程,支持Web界面和实时监控。安装很简单:pip install circus。配置文件(比如circus.ini)长这样:
[watcher:myapp]
cmd = python3.5 /path/to/your/app/main.py
numprocesses = 1
用circusd circus.ini启动守护进程,再用circusctl命令行工具控制。
3. PM2
如果项目里混了Node.js,或者你喜欢它的生态,PM2也支持Python。虽然它主要针对Node,但管理任意进程脚本没问题。先装Node.js和npm,然后npm install pm2 -g。启动应用:pm2 start /path/to/your/app/main.py --interpreter python3.5。常用命令像pm2 list、pm2 logs都很直观。
4. 纯Python方案:multiprocessing + 信号处理
对于简单场景,不想引入额外依赖,可以自己用标准库的multiprocessing模块写个轻量管理器。结合signal处理优雅退出,虽然功能有限,但足够控制几个子进程的启动和停止了。
总结 这几个工具各有侧重:systemd集成度高,Circus功能全,PM2生态好,自建方案最轻量。根据你的具体需求和环境选就行。
没有特殊需求的话任意语言写的 supervisor 都可以,毕竟管理的是 process
装个 python 2 啊。。。又不冲突
supervisor 4.0.0.dev0 已经支持 python3 了,
我这边已经在线上用了。。。。。
额…用起来怎么样?有没有遇到什么坑?稳定吗
蛮稳定的,没出现错过
我司线上就是 py2 环境下的 supervisor 跑 py3 的 web 项目 两年多来没遇到过什么问题
circus


