From bf34d95bc121005fd82f07308dedf71c9be21773 Mon Sep 17 00:00:00 2001 From: shortcutme Date: Sun, 22 Jan 2017 11:09:26 +0100 Subject: [PATCH] Call fileGet and fileList in async --- src/Ui/UiWebsocket.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/Ui/UiWebsocket.py b/src/Ui/UiWebsocket.py index 9f65c66e..0d04ef9b 100644 --- a/src/Ui/UiWebsocket.py +++ b/src/Ui/UiWebsocket.py @@ -37,6 +37,7 @@ class UiWebsocket(object): "channelJoinAllsite", "serverUpdate", "serverPortcheck", "serverShutdown", "certSet", "configSet", "actionPermissionAdd", "actionPermissionRemove" ) + self.async_commands = ("fileGet", "fileList") # Start listener loop def start(self): @@ -157,6 +158,11 @@ class UiWebsocket(object): permissions.append("ADMIN") return permissions + def asyncWrapper(self, func): + def wrapper(*args, **kwargs): + gevent.spawn(func, *args, **kwargs) + return wrapper + # Handle incoming messages def handleRequest(self, data): req = json.loads(data) @@ -176,6 +182,10 @@ class UiWebsocket(object): self.response(req["id"], {"error": "Unknown command: %s" % cmd}) return + # Execute in parallel + if cmd in self.async_commands: + func = self.asyncWrapper(func) + # Support calling as named, unnamed parameters and raw first argument too if type(params) is dict: func(req["id"], **params)