[Python-checkins] r78033 - in python/trunk/Lib: logging/config.py test/test_logging.py

benjamin.peterson python-checkins at python.org
Sat Feb 6 23:08:15 CET 2010


Author: benjamin.peterson
Date: Sat Feb  6 23:08:15 2010
New Revision: 78033

Log:
make waiting for the server to start robust

Modified:
   python/trunk/Lib/logging/config.py
   python/trunk/Lib/test/test_logging.py

Modified: python/trunk/Lib/logging/config.py
==============================================================================
--- python/trunk/Lib/logging/config.py	(original)
+++ python/trunk/Lib/logging/config.py	Sat Feb  6 23:08:15 2010
@@ -843,17 +843,25 @@
                 abort = self.abort
                 logging._releaseLock()
 
-    def serve(rcvr, hdlr, port):
-        server = rcvr(port=port, handler=hdlr)
-        global _listener
-        logging._acquireLock()
-        _listener = server
-        logging._releaseLock()
-        server.serve_until_stopped()
+    class Server(threading.Thread):
+
+        def __init__(self, rcvr, hdlr, port):
+            super(Server, self).__init__()
+            self.rcvr = rcvr
+            self.hdlr = hdlr
+            self.port = port
+            self.ready = threading.Event()
+
+        def run(self):
+            server = self.rcvr(port=self.port, handler=self.hdlr)
+            self.ready.set()
+            global _listener
+            logging._acquireLock()
+            _listener = server
+            logging._releaseLock()
+            server.serve_until_stopped()
 
-    return threading.Thread(target=serve,
-                            args=(ConfigSocketReceiver,
-                                  ConfigStreamHandler, port))
+    return Server(ConfigSocketReceiver, ConfigStreamHandler, port)
 
 def stopListening():
     """

Modified: python/trunk/Lib/test/test_logging.py
==============================================================================
--- python/trunk/Lib/test/test_logging.py	(original)
+++ python/trunk/Lib/test/test_logging.py	Sat Feb  6 23:08:15 2010
@@ -1574,7 +1574,7 @@
         port = find_unused_port()
         t = logging.config.listen(port)
         t.start()
-        time.sleep(0.5) # give server thread some time to get ready
+        t.ready.wait()
         try:
             sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
             sock.settimeout(2.0)


More information about the Python-checkins mailing list