Privacy Policy
Snippets index

  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))