From 9cb2c10c25ddb5e50a0be7734419db788cf723ce Mon Sep 17 00:00:00 2001 From: Narayan Desai Date: Sat, 15 Mar 2008 23:21:36 +0000 Subject: Improve scaling behavior for non-forked handlers. Basically, once a handler (ie GetConfig) is executed synchronously, fork of a child process in order to get more parallelism out of the server. This will help in the case that some clients are slow (no m2crypto, etc) git-svn-id: https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2@4420 ce84e21b-d406-0410-9b95-82705330c041 --- src/lib/Component.py | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/lib') diff --git a/src/lib/Component.py b/src/lib/Component.py index 645c2d5b1..b70e76e05 100644 --- a/src/lib/Component.py +++ b/src/lib/Component.py @@ -25,6 +25,7 @@ class ForkedChild(Exception): class CobaltXMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): '''CobaltXMLRPCRequestHandler takes care of ssl xmlrpc requests''' + masterpid = os.getpid() def do_POST(self): '''Overload do_POST to pass through client address information''' @@ -59,6 +60,11 @@ class CobaltXMLRPCRequestHandler(SimpleXMLRPCServer.SimpleXMLRPCRequestHandler): self.end_headers() else: # got a valid XML RPC response + if os.getpid() != self.masterpid: + pid = os.fork() + if pid: + self.cleanup = False + return try: self.send_response(200) self.send_header("Content-type", "text/xml") -- cgit v1.2.3-1-g7c22