supervisord_utils.py 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  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. self.supervisor.removeProcessGroup(name)
  32. self.supervisor.reloadConfig()
  33. self.supervisor.addProcessGroup(name)
  34. def restart(self, name):
  35. self.stop(name)
  36. self.supervisor.removeProcessGroup(name)
  37. self.supervisor.reloadConfig()
  38. self.supervisor.addProcessGroup(name)
  39. def remove(self, name):
  40. try:
  41. info = self.supervisor.getProcessInfo(name)
  42. statename = info['statename']
  43. if statename == 'RUNNING':
  44. self.supervisor.stopProcess(name)
  45. except Exception as e:
  46. pass
  47. self.supervisor.removeProcessGroup(name)
  48. path = '/data/supervisor/config.d'
  49. file_path = os.path.join(path, name)
  50. if os.path.isfile(file_path):
  51. os.remove(file_path)
  52. if __name__ == '__main__':
  53. su = SupervisordUtils()
  54. print(su.list())
  55. su.restart('本地测试_test2')
  56. # su.restart('本地测试_test2')