Supervisor: using xmlrpc interface ¶
file "/etc/supervisor/supervisord.conf":
; supervisor config file [inet_http_server] port = 127.0.0.1:9001 [rpcinterface:supervisor] supervisor.rpcinterface_factory = supervisor.rpcinterface:make_main_rpcinterface ...
import xmlrpclib server = xmlrpclib.Server('http://localhost:9001/RPC2') server.supervisor.getState() ... server.system.listMethods() ... server.supervisor.getAllProcessInfo() [{'description': 'pid 5680, uptime 0:11:57', 'exitstatus': 0, 'group': 'alfadesk_alfadesk_alfaservice', 'logfile': '/home/alfadesk/logs/alfaservice.log', 'name': 'alfadesk_alfadesk_alfaservice', 'now': 1513289229, 'pid': 5680, 'spawnerr': '', 'start': 1513288512, 'state': 20, 'statename': 'RUNNING', 'stderr_logfile': '/home/alfadesk/logs/alfaservice_error.log', 'stdout_logfile': '/home/alfadesk/logs/alfaservice.log', 'stop': 0}, ...
for Python3
[inet_http_server] port=127.0.0.1:9090 username=admin password=fd468a53ba8bf909 ...
#!/usr/bin/env python3 from xmlrpc.client import ServerProxy SUPERVISOR_URL = 'http://admin:fd468a53ba8bf909@localhost:9090/RPC2' class SupervisorServer(): def __init__(self, url): self.server = ServerProxy(url) def get_state(self): return self.server.supervisor.getState() def get_all_process_info(self): return self.server.supervisor.getAllProcessInfo() def list_system_methods(self): return self.server.system.listMethods() def get_process_info(self, name): return self.server.supervisor.getProcessInfo(name) def start_process(self, name, wait=True): return self.server.supervisor.startProcess(name, wait) def stop_process(self, name, wait=True): return self.server.supervisor.stopProcess(name, wait) if __name__ == '__main__': import pprint server = SupervisorServer(SUPERVISOR_URL) try: print('\n**** state:') print(server.get_state()) print('\n**** processes:') pprint.pprint(server.get_all_process_info()) print('\n**** methods:') pprint.pprint(server.list_system_methods()) except Exception as e: print('ERROR: ' + str(e))