Call fileGet and fileList in async

This commit is contained in:
shortcutme 2017-01-22 11:09:26 +01:00
parent b6644887bd
commit bf34d95bc1
No known key found for this signature in database
GPG key ID: 5B63BAE6CB9613AE

View file

@ -37,6 +37,7 @@ class UiWebsocket(object):
"channelJoinAllsite", "serverUpdate", "serverPortcheck", "serverShutdown", "certSet", "configSet", "channelJoinAllsite", "serverUpdate", "serverPortcheck", "serverShutdown", "certSet", "configSet",
"actionPermissionAdd", "actionPermissionRemove" "actionPermissionAdd", "actionPermissionRemove"
) )
self.async_commands = ("fileGet", "fileList")
# Start listener loop # Start listener loop
def start(self): def start(self):
@ -157,6 +158,11 @@ class UiWebsocket(object):
permissions.append("ADMIN") permissions.append("ADMIN")
return permissions return permissions
def asyncWrapper(self, func):
def wrapper(*args, **kwargs):
gevent.spawn(func, *args, **kwargs)
return wrapper
# Handle incoming messages # Handle incoming messages
def handleRequest(self, data): def handleRequest(self, data):
req = json.loads(data) req = json.loads(data)
@ -176,6 +182,10 @@ class UiWebsocket(object):
self.response(req["id"], {"error": "Unknown command: %s" % cmd}) self.response(req["id"], {"error": "Unknown command: %s" % cmd})
return 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 # Support calling as named, unnamed parameters and raw first argument too
if type(params) is dict: if type(params) is dict:
func(req["id"], **params) func(req["id"], **params)