Saggi Mizrahi has uploaded a new change for review. Change subject: Add multi-threading option to JsonRpcServer ......................................................................
Add multi-threading option to JsonRpcServer Change-Id: I0a37dfcf3cfde92c8552e6c6eef5016efe3fbd6d Signed-off-by: Saggi Mizrahi <[email protected]> --- M vdsm_api/BindingJsonRpc.py M vdsm_api/jsonrpc/__init__.py 2 files changed, 14 insertions(+), 3 deletions(-) git pull ssh://gerrit.ovirt.org:29418/vdsm refs/changes/74/10374/1 diff --git a/vdsm_api/BindingJsonRpc.py b/vdsm_api/BindingJsonRpc.py index 645428e..11080b5 100644 --- a/vdsm_api/BindingJsonRpc.py +++ b/vdsm_api/BindingJsonRpc.py @@ -28,13 +28,19 @@ pass +def _simpleThreadFactory(func): + t = threading.Thread(target=func) + t.setDaemon(False) + t.start() + + class BindingJsonRpc(object): log = logging.getLogger('BindingJsonRpc') def __init__(self, bridge, backendConfig): reactors = [] self.bridge = bridge - self.server = JsonRpcServer(bridge) + self.server = JsonRpcServer(bridge, _simpleThreadFactory) for backendType, cfg in backendConfig: if backendType == "tcp": reactors.append(self._createTcpReactor(cfg)) diff --git a/vdsm_api/jsonrpc/__init__.py b/vdsm_api/jsonrpc/__init__.py index 9463262..2ef6e36 100644 --- a/vdsm_api/jsonrpc/__init__.py +++ b/vdsm_api/jsonrpc/__init__.py @@ -15,6 +15,7 @@ import json import logging from Queue import Queue +from functools import partial __all__ = ["tcpReactor"] @@ -93,9 +94,10 @@ class JsonRpcServer(object): log = logging.getLogger("jsonrpc.JsonRpcServer") - def __init__(self, bridge): + def __init__(self, bridge, threadFactory=None): self._bridge = bridge self._workQueue = Queue() + self._threadFactory = threadFactory def _parseMessage(self, msg): try: @@ -180,7 +182,10 @@ break if isinstance(obj, _JsonRpcRequest): - self._serveRequest(obj) + if self._threadFactory is None: + self._serveRequest(obj) + else: + self._threadFactory(partial(self._serveRequest, obj)) else: self._processResponse(obj) -- To view, visit http://gerrit.ovirt.org/10374 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I0a37dfcf3cfde92c8552e6c6eef5016efe3fbd6d Gerrit-PatchSet: 1 Gerrit-Project: vdsm Gerrit-Branch: master Gerrit-Owner: Saggi Mizrahi <[email protected]> _______________________________________________ vdsm-patches mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/vdsm-patches
