diff --git a/tcsfw/client_api.py b/tcsfw/client_api.py index e8f588e..e1a77e6 100644 --- a/tcsfw/client_api.py +++ b/tcsfw/client_api.py @@ -164,7 +164,7 @@ def api_exit(self, _request: APIRequest, data: bytes) -> Dict: clear_db = bool(param.get("clear_db", False)) if clear_db: self.registry.clear_database() - return {} + return param def api_post_file(self, request: APIRequest, data_file: pathlib.Path) -> Dict: """Post API data in ZIP file""" diff --git a/tcsfw/http_server.py b/tcsfw/http_server.py index 088cff8..d367d81 100644 --- a/tcsfw/http_server.py +++ b/tcsfw/http_server.py @@ -266,13 +266,18 @@ async def handle_reload(self, request: web.Request): req = APIRequest.parse(request.path_qs) data = await request.content.read() if request.content else b"" res = self.api.api_exit(req, data) + exit_delay = int(res.get("exit_delay", 1000)) + res = {} # do not return the parameters # reload means exiting this process, delay it for response to be sent def do_exit(): # return code 0 for successful exit sys.exit(0) # pylint: disable=consider-using-sys-exit - self.loop.call_later(1, do_exit) + if exit_delay > 0: + self.loop.call_later(exit_delay / 1000, do_exit) + else: + do_exit() # no response will be sent return web.Response(text=json.dumps(res)) def dump_model(self, channel: WebsocketChannel):