网站开发持续更新,建e网室内,网页制作教程咖啡图,企业网站模板编辑软件点击上方蓝字关注【 北邮郭大宝 】Supervisor可以很好的实现Python的进程管理#xff0c;但是新增进程时需要配置文件#xff0c;对于需要动态创建进程的场景不是很友好#xff0c;supervisor_twiddler插件可以帮助实现上述功能。本文就supervisor_twiddler的使用做简单的de… 点击上方蓝字关注【 北邮郭大宝 】Supervisor可以很好的实现Python的进程管理但是新增进程时需要配置文件对于需要动态创建进程的场景不是很友好supervisor_twiddler插件可以帮助实现上述功能。本文就supervisor_twiddler的使用做简单的demo详细内容可以查阅https://github.com/mnaberez/supervisor_twiddler1. 安装 pip install supervisor_twiddler 2. 准备待管理的进程这里使用一个faskapi的demo做为稍后supervisor管理的进程from fastapi import FastAPIapp FastAPI()app.get(/)async def hello(): return hello world, guoxingyu3. 修改supervisord.confsupervisord.conf的改动有两个第一是目前看supervisor_twiddler推荐给已有的组添加进程所以需要在supervisord.conf中添加组名第二是添加[rpcinterface:twiddler]内容如下[group:test][rpcinterface:twiddler]supervisor.rpcinterface_factory supervisor_twiddler.rpcinterface:make_twiddler_rpcinterface4. 通过supervisor_twiddler实现进程管理from xmlrpc.client import ServerProxyif __name__ __main__: # 通过user、passwd连接supervisor的RPC服务 server ServerProxy(http://user:123localhost:9001/RPC2) # 打印目前的Group list print(server.twiddler.getGroupNames()) # 动态新增process server.twiddler.addProgramToGroup(test, helloworld, \ {command: gunicorn fastapidemo:app -b 0.0.0.0:8088 -w 1 -k uvicorn.workers.UvicornWorker, autostart:true, autorestart:true}) # 停止process并删除 server.supervisor.stopProcess(test:helloworld) server.twiddler.removeProcessFromGroup(test, helloworld) # 查看process日志 print(server.supervisor.tailProcessStderrLog(test:helloworld,0,512))这里主要实现了动态新增进程关闭进程查看日志三个子功能。其中addProgramToGroup的具体参数可以看Github原文第一个是Group名、第二个是process名第三个是dict包括supervisor配置的一些参数。效果不过supervisor_twiddler管理的进程不能持久化保存当supervisor重启后进程就不在了需要重新动态添加进程。