From 5649804264a19c8cd3ea7823a5fe488955e59b1a Mon Sep 17 00:00:00 2001 From: VisualDust Date: Sun, 26 Nov 2023 05:49:28 +0800 Subject: [PATCH] fixed callback not working on actions with blocking=True --- neetbox/daemon/client/_action_agent.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/neetbox/daemon/client/_action_agent.py b/neetbox/daemon/client/_action_agent.py index 67dad213..0e10388f 100644 --- a/neetbox/daemon/client/_action_agent.py +++ b/neetbox/daemon/client/_action_agent.py @@ -77,21 +77,21 @@ def eval_call(name: str, params: dict, callback: None): logger.log( f"Agent runs function '{target_action.name}', blocking = {target_action.blocking}" ) - if not target_action.blocking: # non-blocking run in thread - def run_and_callback(target_action, params, callback): - returned_data = target_action.eval_call(params) - if callback: - callback(returned_data) + def run_and_callback(): + returned_data = target_action.eval_call(params) + if callback: + callback(returned_data) + if not target_action.blocking: # non-blocking run in thread Thread( target=run_and_callback, - kwargs={"target_action": target_action, "params": params, "callback": callback}, daemon=True, ).start() - return None + return else: # blocking run - return target_action.eval_call(params) + run_and_callback() + return @watch(name="__action", initiative=True, _channel=SYSTEM_CHANNEL) def _update_action_dict():