[python基础]xml_rpc远程调控supervisor节点进程

supervisor提供的两种管理方式,supervisorctl和web其实都是通过xml_rpc来实现的。

xml_rpc其实就是本地可以去调用远端的函数方法,在python中只需要引入xmlrpclib即可实现对客户端的操作

例如:

import xmlrpclib
server = xmlrpclib.server(‘http://localhost:9001/RPC2‘)
methods = server.system.listMethods()print(methods)

结果如下:

[‘supervisor.addProcessGroup‘, ‘supervisor.clearAllProcessLogs‘, ‘supervisor.clearLog‘, ‘supervisor.clearProcessLog‘, 

‘supervisor.clearProcessLogs‘, ‘supervisor.getAPIVersion‘, ‘supervisor.getAllConfigInfo‘, ‘supervisor.getAllProcessInfo‘, 

‘supervisor.getIdentification‘, ‘supervisor.getPID‘, ‘supervisor.getProcessInfo‘, ‘supervisor.getState‘, ‘supervisor.getSupervisorVersion‘, 

‘supervisor.getVersion‘, ‘supervisor.readLog‘, ‘supervisor.readMainLog‘, ‘supervisor.readProcessLog‘, ‘supervisor.readProcessStderrLog‘, 

‘supervisor.readProcessStdoutLog‘, ‘supervisor.reloadConfig‘, ‘supervisor.removeProcessGroup‘, ‘supervisor.restart‘, ‘supervisor.sendProcessStdin‘, 

‘supervisor.sendRemoteCommEvent‘, ‘supervisor.shutdown‘, ‘supervisor.signalAllProcesses‘, ‘supervisor.signalProcess‘, ‘supervisor.signalProcessGroup‘, 

‘supervisor.startAllProcesses‘, ‘supervisor.startProcess‘, ‘supervisor.startProcessGroup‘, ‘supervisor.stopAllProcesses‘, ‘supervisor.stopProcess‘, 

‘supervisor.stopProcessGroup‘, ‘supervisor.tailProcessLog‘, ‘supervisor.tailProcessStderrLog‘, ‘supervisor.tailProcessStdoutLog‘,

‘system.listMethods‘, ‘system.methodHelp‘, ‘system.methodSignature‘, ‘system.multicall‘]

所有方法在/Library/Python/2.7/site-packages/supervisor/rpcinterface.py下

举个例子:

1.启动该节点下某个程序:if server.supervisor.startProcess(process_name):
    print(‘%s has started‘ %process_name)

如果该程序已经启动会报错:

xmlrpclib.Fault: <Fault 60: ‘ALREADY_STARTED: celery_beat‘>

2.停止某个程序

server.supervisor.stopProcess(process_name)

 如果该程序未启动则会报错:

xmlrpclib.Fault: <Fault 70: ‘NOT_RUNNING: celery_beat‘>

3.读取日志

  og = server.supervisor.readLog(0,500)

  print(log)

结果如下:

2018-09-14 17:31:25,782 INFO RPC interface ‘supervisor‘ initialized
2018-09-14 17:31:25,782 CRIT Server ‘inet_http_server‘ running without any HTTP authentication checking
2018-09-14 17:31:25,785 INFO daemonizing the supervisord process
2018-09-14 17:31:25,786 INFO supervisord started with pid 51752
2018-09-14 17:31:58,968 INFO spawned: ‘django_web‘ with pid 51757
2018-09-14 17:32:00,512 INFO success: django_web entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
2018-0

4.关闭某个supervisor节点server.supervisor.shutdown()此时如果再用xmlrpclib创建server会报错:

socket.error: [Errno 61] Connection refused

完。

原文地址:https://www.cnblogs.com/halleluyah/p/9674584.html

时间: 2024-10-09 20:58:03

[python基础]xml_rpc远程调控supervisor节点进程的相关文章

Python基础 - 第九天 - paramiko模块、进程、线程

本篇内容: 1.paramiko模块使用 2.进程.线程简介 3.python调用线程的方法 4.join - 等待线程执行 5.守护线程 6.GIL - 全局解释器锁 7.互斥锁 8.信号量 9.事件 10.队列 一.paramiko模块使用 1.paramiko模块简介 ? paramiko是一个基于SSH用于连接远程服务器并执行相关操作(SSHClient和SFTPClinet,即一个是远程连接,一个是上传下载服务),使用该模块可以对远程服务器进行命令或文件操作,值得一说的是,fabric

Python 基础之 线程与进程

Python 基础之 线程与进程 在前面已经接触过了,socket编程的基础知识,也通过socketserver 模块实现了并发,也就是多个客户端可以给服务器端发送消息,那接下来还有个问题,如何用多线程与多进程来实现并发呢?今天就来了解一下这方面的知识. 一.进程与线程的概念介绍 多任务处理是指用户可以在同一时间内运行多个应用程序,每个应用程序被称作一个任务.Linux.windows就是支持多任务的操作系统,比起单任务系统它的功能增强了许多. 运行一个任务就需要cpu去处理,那同时运行多个任务

python基础学习07(核心编程第二版)部分

# -*- coding: utf-8 -*- # ==================== #File: python #Author: python #Date: 2014 #==================== __author__ = 'Administrator' #file与input output #文件对象 #简单说来,就是写入和读取的方式 #file(),open()2个操作都是一样的,一般推荐open() #语法 # open(name[, mode[, bufferin

Python基础教程(第十四章 网络编程)

本文内容全部出自<Python基础教程>第二版,在此分享自己的学习之路. ______欢迎转载:http://www.cnblogs.com/Marlowes/p/5538341.html______ Created on Marlowes 本章将会给读者展示一些例子,这些例子会使用多种Python的方法编写一个将网络(比如因特网)作为重要组成部分的程序.Python是一个很强大的网络编程工具,这么说有很多原因,首先,Python内有很多针对常见网络协议的库,在库顶部可以获得抽象层,这样就可以

python基础31[常用模块介绍]

python基础31[常用模块介绍] python除了关键字(keywords)和内置的类型和函数(builtins),更多的功能是通过libraries(即modules)来提供的. 常用的libraries(modules)如下: 1)python运行时服务 * copy: copy模块提供了对复合(compound)对象(list,tuple,dict,custom class)进行浅拷贝和深拷贝的功能. * pickle: pickle模块被用来序列化python的对象到bytes流,从

python基础07

Python基础学习07-模块 模块 一.模块基础 1.定义 模块:用来从逻辑上组织python代码(变量.函数.类.逻辑:目的是实现一个功能 ),本质就是.py结尾的python文件(文件名:test.py,对应的模块名:test) 包:用来从逻辑上组织模块的,本质就是一个目录(必须带有一个__init__.py的文件)  2.导入方法 import  module_name (导入一个模块) import  module_name_1,module_name_2(导入多个模块用逗号分隔) f

2017传智播客python基础班+就业班

2017传智播客python基础班+就业班  地址:http://www.zygx8.com/thread-6085-1-1.html 本课程包含了Python的基础语法和核心编程,以及Python应用中流行的数据库.前端,Web框架,爬虫框架及其分布式策略等技术,包含了丰富的项目案例.适合零基础或有一定Linux和Python基础的学生,特别适合于大专院校计算机专业的学生,学习过各类视频教程的未就业人士以及在职程序员. python基础 linux操作系统基础 1-Linux以及命令 2-li

docker supervisor管理进程

一.使用supervisor来管理 supervisor:进程管理工具,基于C/S架构.(其提供web接口给用户查询和 控制),它允许用户去监控和控制在类unix系统的进程. 使用supervisor可以更好的控制.管理.重启我们希望运行的进程. 在这演示一下如何同时使用ssh和 apache 服务.(通过docker buid生成新镜像) 配置 1.首先创建一个dockerfile目录 dockerfile文件内容 supervisor配置文件内容 第一段supervsord配置软件本身,使用

python基础一

python基础一 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发: 众多优秀的WEB框架,众多大型网站均为Python开发,Youtube, Dropbox, 豆瓣..., 典型WEB框架有Django 科学运算.人工智能: 典型库NumPy, SciPy, Matplotlib, Enthought librarys,pandas 系统运维: 运维人员必备语言 金融:量化交易,金融分析,在金融工程领域,Python不但在用,且用的最多,而