THRIFT-598. py: Allow Python's threading servers to use daemon threads
authorBryan Duxbury <bryanduxbury@apache.org>
Thu, 2 Sep 2010 15:12:06 +0000 (15:12 +0000)
committerBryan Duxbury <bryanduxbury@apache.org>
Thu, 2 Sep 2010 15:12:06 +0000 (15:12 +0000)
Patch: David Reiss

git-svn-id: https://svn.apache.org/repos/asf/incubator/thrift/trunk@991969 13f79535-47bb-0310-9956-ffa450edef68

lib/py/src/server/TServer.py

index 6152911..8456e2d 100644 (file)
@@ -93,8 +93,9 @@ class TThreadedServer(TServer):
 
   """Threaded server that spawns a new thread per each connection."""
 
-  def __init__(self, *args):
+  def __init__(self, *args, **kwargs):
     TServer.__init__(self, *args)
+    self.daemon = kwargs.get("daemon", False)
 
   def serve(self):
     self.serverTransport.listen()
@@ -102,6 +103,7 @@ class TThreadedServer(TServer):
       try:
         client = self.serverTransport.accept()
         t = threading.Thread(target = self.handle, args=(client,))
+        t.setDaemon(self.daemon)
         t.start()
       except KeyboardInterrupt:
         raise
@@ -128,10 +130,11 @@ class TThreadPoolServer(TServer):
 
   """Server with a fixed size pool of threads which service requests."""
 
-  def __init__(self, *args):
+  def __init__(self, *args, **kwargs):
     TServer.__init__(self, *args)
     self.clients = Queue.Queue()
     self.threads = 10
+    self.daemon = kwargs.get("daemon", False)
 
   def setNumThreads(self, num):
     """Set the number of worker threads that should be created"""
@@ -168,6 +171,7 @@ class TThreadPoolServer(TServer):
     for i in range(self.threads):
       try:
         t = threading.Thread(target = self.serveThread)
+        t.setDaemon(self.daemon)
         t.start()
       except Exception, x:
         logging.exception(x)