supervisord_utils.py 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. # coding:utf-8
  2. import os.path
  3. from xmlrpc.client import ServerProxy
  4. class SupervisordUtils:
  5. def __init__(self):
  6. url = "http://yunfei_yanfabu:yanfabu6021@127.0.0.1:59001/RPC2"
  7. self.server = ServerProxy(url)
  8. self.supervisor = self.server.supervisor
  9. def is_exists(self, name):
  10. exists = True
  11. try:
  12. self.supervisor.getProcessInfo(name)
  13. except Exception as e:
  14. exists = False
  15. return exists
  16. def list(self, name):
  17. result = []
  18. for info in self.supervisor.getAllProcessInfo():
  19. if name and (name not in info['name']):
  20. continue
  21. result.append(info)
  22. return result
  23. def stop(self, name):
  24. try:
  25. info = self.supervisor.getProcessInfo(name)
  26. statename = info['statename']
  27. if statename == 'RUNNING':
  28. self.supervisor.stopProcess(name)
  29. except Exception as e:
  30. pass
  31. def restart(self, name):
  32. self.stop(name)
  33. self.supervisor.removeProcessGroup(name)
  34. self.supervisor.reloadConfig()
  35. self.supervisor.addProcessGroup(name)
  36. def remove(self, name):
  37. self.stop(name)
  38. self.supervisor.removeProcessGroup(name)
  39. path = '/data/supervisor/config.d'
  40. file_path = os.path.join(path, name)
  41. if os.path.isfile(file_path):
  42. os.remove(file_path)
  43. if __name__ == '__main__':
  44. su = SupervisordUtils()
  45. print(su.list())
  46. su.restart('本地测试_test2')
  47. # su.restart('本地测试_test2')