mirror of
https://github.com/avatao-content/baseimage-tutorial-framework
synced 2024-11-22 19:41:32 +00:00
Extract process managing logic to SupervisorMixin from event handlers
This commit is contained in:
parent
8b9f7e50cb
commit
c74c00c618
@ -1,4 +1,6 @@
|
|||||||
import xmlrpc.client, zmq
|
import xmlrpc.client, zmq
|
||||||
|
from contextlib import suppress
|
||||||
|
from xmlrpc.client import Fault as SupervisorFault
|
||||||
|
|
||||||
from .config.envvars import SUPERVISOR_HTTP_URI
|
from .config.envvars import SUPERVISOR_HTTP_URI
|
||||||
|
|
||||||
@ -14,6 +16,17 @@ def create_source_code_response_data(filename, content, language):
|
|||||||
class SupervisorMixin:
|
class SupervisorMixin:
|
||||||
supervisor = xmlrpc.client.ServerProxy(SUPERVISOR_HTTP_URI).supervisor
|
supervisor = xmlrpc.client.ServerProxy(SUPERVISOR_HTTP_URI).supervisor
|
||||||
|
|
||||||
|
def stop_process(self):
|
||||||
|
with suppress(SupervisorFault):
|
||||||
|
self.supervisor.stopProcess(self.process_name)
|
||||||
|
|
||||||
|
def start_process(self):
|
||||||
|
self.supervisor.startProcess(self.process_name)
|
||||||
|
|
||||||
|
def restart_process(self):
|
||||||
|
self.stop_process()
|
||||||
|
self.start_process()
|
||||||
|
|
||||||
|
|
||||||
class ZMQConnectorBase:
|
class ZMQConnectorBase:
|
||||||
def __init__(self, zmq_context=None):
|
def __init__(self, zmq_context=None):
|
||||||
|
@ -1,7 +1,5 @@
|
|||||||
from shutil import copy, rmtree, copytree
|
from shutil import copy, rmtree, copytree
|
||||||
from os.path import splitext
|
from os.path import splitext
|
||||||
from contextlib import suppress
|
|
||||||
from xmlrpc.client import Fault as SupervisorFault
|
|
||||||
|
|
||||||
from tfw.util import SupervisorMixin
|
from tfw.util import SupervisorMixin
|
||||||
from tfw.config import LOGIN_APP_DIR
|
from tfw.config import LOGIN_APP_DIR
|
||||||
@ -43,19 +41,16 @@ class SourceCodeEventHandler(EventHandlerBase, SupervisorMixin):
|
|||||||
data = data_json['data']
|
data = data_json['data']
|
||||||
with open(self.file, 'w') as ofile:
|
with open(self.file, 'w') as ofile:
|
||||||
ofile.write(data['content'])
|
ofile.write(data['content'])
|
||||||
self.supervisor.stopProcess(self.process_name)
|
self.restart_process()
|
||||||
self.supervisor.startProcess(self.process_name)
|
|
||||||
|
|
||||||
def create_initial_state(self):
|
def create_initial_state(self):
|
||||||
with suppress(SupervisorFault):
|
self.stop_process()
|
||||||
self.supervisor.stopProcess(self.process_name)
|
|
||||||
|
|
||||||
rmtree(self.working_directory, ignore_errors=True)
|
rmtree(self.working_directory, ignore_errors=True)
|
||||||
copytree('source_code_server/', self.working_directory)
|
copytree('source_code_server/', self.working_directory)
|
||||||
file = copy(self.filename, self.working_directory)
|
file = copy(self.filename, self.working_directory)
|
||||||
|
|
||||||
self.supervisor.startProcess(self.process_name)
|
self.start_process()
|
||||||
|
|
||||||
return file
|
return file
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,7 +17,7 @@ class TerminadoEventHandler(EventHandlerBase, SupervisorMixin):
|
|||||||
def setup_terminado_server(self):
|
def setup_terminado_server(self):
|
||||||
rmtree(self.working_directory, ignore_errors=True)
|
rmtree(self.working_directory, ignore_errors=True)
|
||||||
copytree('terminado_server/', self.working_directory)
|
copytree('terminado_server/', self.working_directory)
|
||||||
self.supervisor.startProcess(self.process_name)
|
self.start_process()
|
||||||
|
|
||||||
def handle_event(self, anchor, data_json):
|
def handle_event(self, anchor, data_json):
|
||||||
log.debug('TerminadoEventHandler received event for anchor {}'.format(anchor))
|
log.debug('TerminadoEventHandler received event for anchor {}'.format(anchor))
|
||||||
|
Loading…
Reference in New Issue
Block a user