Initialise supervisor xmlrpc client lazily to avoid globals

This commit is contained in:
Kristóf Tóth 2018-06-01 14:01:32 +02:00
parent 8817f991a5
commit 9f3a3b501f
2 changed files with 4 additions and 12 deletions

View File

@ -29,7 +29,6 @@ class LogMonitor(ObserverMixin):
class SendLogWatchdogEventHandler(PatternMatchingWatchdogEventHandler, SupervisorLogMixin): class SendLogWatchdogEventHandler(PatternMatchingWatchdogEventHandler, SupervisorLogMixin):
def __init__(self, process_name, log_tail=0): def __init__(self, process_name, log_tail=0):
self.acquire_own_supervisor_instance() # This thread-localises the xmlrpc client
self.process_name = process_name self.process_name = process_name
self.procinfo = self.supervisor.getProcessInfo(self.process_name) self.procinfo = self.supervisor.getProcessInfo(self.process_name)
super().__init__([self.procinfo['stdout_logfile'], self.procinfo['stderr_logfile']]) super().__init__([self.procinfo['stdout_logfile'], self.procinfo['stderr_logfile']])

View File

@ -6,21 +6,14 @@ from xmlrpc.client import Fault as SupervisorFault
from contextlib import suppress from contextlib import suppress
from os import remove from os import remove
from tfw.decorators import LazyInitialise
from tfw.config import TFWENV from tfw.config import TFWENV
def get_supervisor_instance():
return xmlrpc.client.ServerProxy(TFWENV.SUPERVISOR_HTTP_URI).supervisor
class SupervisorBaseMixin: class SupervisorBaseMixin:
supervisor = get_supervisor_instance() @LazyInitialise
def supervisor(self):
def acquire_own_supervisor_instance(self): return xmlrpc.client.ServerProxy(TFWENV.SUPERVISOR_HTTP_URI).supervisor
"""
Give this instance non-static, local xmlrpc client
"""
self.supervisor = get_supervisor_instance()
class SupervisorMixin(SupervisorBaseMixin): class SupervisorMixin(SupervisorBaseMixin):