forked from M-Labs/artiq
master: simplify worker/parent RPC
This commit is contained in:
parent
4e35a247d1
commit
1ada15ae5d
|
@ -160,8 +160,7 @@ class Worker:
|
||||||
return True
|
return True
|
||||||
elif action == "pause":
|
elif action == "pause":
|
||||||
return False
|
return False
|
||||||
del obj["action"]
|
elif action == "create_watchdog":
|
||||||
if action == "create_watchdog":
|
|
||||||
func = self.create_watchdog
|
func = self.create_watchdog
|
||||||
elif action == "delete_watchdog":
|
elif action == "delete_watchdog":
|
||||||
func = self.delete_watchdog
|
func = self.delete_watchdog
|
||||||
|
@ -172,7 +171,7 @@ class Worker:
|
||||||
if getattr(func, "worker_pass_rid", False):
|
if getattr(func, "worker_pass_rid", False):
|
||||||
func = partial(func, self.rid)
|
func = partial(func, self.rid)
|
||||||
try:
|
try:
|
||||||
data = func(**obj)
|
data = func(*obj["args"], **obj["kwargs"])
|
||||||
reply = {"status": "ok", "data": data}
|
reply = {"status": "ok", "data": data}
|
||||||
except:
|
except:
|
||||||
reply = {"status": "failed",
|
reply = {"status": "failed",
|
||||||
|
|
|
@ -26,12 +26,9 @@ class ParentActionError(Exception):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
def make_parent_action(action, argnames, exception=ParentActionError):
|
def make_parent_action(action, exception=ParentActionError):
|
||||||
argnames = argnames.split()
|
def parent_action(*args, **kwargs):
|
||||||
def parent_action(*args):
|
request = {"action": action, "args": args, "kwargs": kwargs}
|
||||||
request = {"action": action}
|
|
||||||
for argname, arg in zip(argnames, args):
|
|
||||||
request[argname] = arg
|
|
||||||
put_object(request)
|
put_object(request)
|
||||||
reply = get_object()
|
reply = get_object()
|
||||||
if "action" in reply:
|
if "action" in reply:
|
||||||
|
@ -50,7 +47,7 @@ class LogForwarder:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.buffer = ""
|
self.buffer = ""
|
||||||
|
|
||||||
to_parent = staticmethod(make_parent_action("log", "message"))
|
to_parent = staticmethod(make_parent_action("log"))
|
||||||
|
|
||||||
def write(self, data):
|
def write(self, data):
|
||||||
self.buffer += data
|
self.buffer += data
|
||||||
|
@ -64,18 +61,18 @@ class LogForwarder:
|
||||||
|
|
||||||
|
|
||||||
class ParentDeviceDB:
|
class ParentDeviceDB:
|
||||||
get_device_db = make_parent_action("get_device_db", "")
|
get_device_db = make_parent_action("get_device_db")
|
||||||
get = make_parent_action("get_device", "key", KeyError)
|
get = make_parent_action("get_device", KeyError)
|
||||||
|
|
||||||
|
|
||||||
class ParentDatasetDB:
|
class ParentDatasetDB:
|
||||||
get = make_parent_action("get_dataset", "key", KeyError)
|
get = make_parent_action("get_dataset", KeyError)
|
||||||
update = make_parent_action("update_dataset", "mod")
|
update = make_parent_action("update_dataset")
|
||||||
|
|
||||||
|
|
||||||
class Watchdog:
|
class Watchdog:
|
||||||
_create = make_parent_action("create_watchdog", "t")
|
_create = make_parent_action("create_watchdog")
|
||||||
_delete = make_parent_action("delete_watchdog", "wid")
|
_delete = make_parent_action("delete_watchdog")
|
||||||
|
|
||||||
def __init__(self, t):
|
def __init__(self, t):
|
||||||
self.t = t
|
self.t = t
|
||||||
|
@ -91,15 +88,14 @@ set_watchdog_factory(Watchdog)
|
||||||
|
|
||||||
|
|
||||||
class Scheduler:
|
class Scheduler:
|
||||||
pause_noexc = staticmethod(make_parent_action("pause", ""))
|
pause_noexc = staticmethod(make_parent_action("pause"))
|
||||||
|
|
||||||
def pause(self):
|
def pause(self):
|
||||||
if self.pause_noexc():
|
if self.pause_noexc():
|
||||||
raise TerminationRequested
|
raise TerminationRequested
|
||||||
|
|
||||||
submit = staticmethod(make_parent_action("scheduler_submit",
|
submit = staticmethod(make_parent_action("scheduler_submit"))
|
||||||
"pipeline_name expid priority due_date flush"))
|
cancel = staticmethod(make_parent_action("scheduler_cancel"))
|
||||||
cancel = staticmethod(make_parent_action("scheduler_cancel", "rid"))
|
|
||||||
|
|
||||||
def set_run_info(self, pipeline_name, expid, priority):
|
def set_run_info(self, pipeline_name, expid, priority):
|
||||||
self.pipeline_name = pipeline_name
|
self.pipeline_name = pipeline_name
|
||||||
|
@ -120,22 +116,21 @@ def get_exp(file, class_name):
|
||||||
return getattr(module, class_name)
|
return getattr(module, class_name)
|
||||||
|
|
||||||
|
|
||||||
register_experiment = make_parent_action("register_experiment",
|
register_experiment = make_parent_action("register_experiment")
|
||||||
"class_name name arguments")
|
|
||||||
|
|
||||||
|
|
||||||
class ExamineDeviceMgr:
|
class ExamineDeviceMgr:
|
||||||
get_device_db = make_parent_action("get_device_db", "")
|
get_device_db = make_parent_action("get_device_db")
|
||||||
|
|
||||||
def get(self, name):
|
def get(name):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
|
|
||||||
class DummyDatasetMgr:
|
class DummyDatasetMgr:
|
||||||
def set(self, key, value, broadcast=False, persist=False, save=True):
|
def set(key, value, broadcast=False, persist=False, save=True):
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get(self, key):
|
def get(key):
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
|
||||||
|
@ -213,7 +208,7 @@ def main():
|
||||||
f.close()
|
f.close()
|
||||||
put_object({"action": "completed"})
|
put_object({"action": "completed"})
|
||||||
elif action == "examine":
|
elif action == "examine":
|
||||||
examine(ExamineDeviceMgr(), DummyDatasetMgr(), obj["file"])
|
examine(ExamineDeviceMgr, DummyDatasetMgr, obj["file"])
|
||||||
put_object({"action": "completed"})
|
put_object({"action": "completed"})
|
||||||
elif action == "terminate":
|
elif action == "terminate":
|
||||||
break
|
break
|
||||||
|
|
Loading…
Reference in New Issue