[Python-checkins] r70722 - in python/branches/release26-maint: Lib/multiprocessing/connection.py Lib/test/test_multiprocessing.py Misc/NEWS

jesse.noller python-checkins at python.org
Mon Mar 30 18:19:12 CEST 2009


Author: jesse.noller
Date: Mon Mar 30 18:19:10 2009
New Revision: 70722

Log:
Merge 70717 to 26maint

Modified:
   python/branches/release26-maint/   (props changed)
   python/branches/release26-maint/Lib/multiprocessing/connection.py
   python/branches/release26-maint/Lib/test/test_multiprocessing.py
   python/branches/release26-maint/Misc/NEWS

Modified: python/branches/release26-maint/Lib/multiprocessing/connection.py
==============================================================================
--- python/branches/release26-maint/Lib/multiprocessing/connection.py	(original)
+++ python/branches/release26-maint/Lib/multiprocessing/connection.py	Mon Mar 30 18:19:10 2009
@@ -214,6 +214,7 @@
     '''
     def __init__(self, address, family, backlog=1):
         self._socket = socket.socket(getattr(socket, family))
+        self._socket.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
         self._socket.bind(address)
         self._socket.listen(backlog)
         self._address = self._socket.getsockname()

Modified: python/branches/release26-maint/Lib/test/test_multiprocessing.py
==============================================================================
--- python/branches/release26-maint/Lib/test/test_multiprocessing.py	(original)
+++ python/branches/release26-maint/Lib/test/test_multiprocessing.py	Mon Mar 30 18:19:10 2009
@@ -1188,6 +1188,30 @@
         del queue
         manager.shutdown()
 
+class _TestManagerRestart(BaseTestCase):
+
+    def _putter(self, address, authkey):
+        manager = QueueManager(
+            address=address, authkey=authkey, serializer=SERIALIZER)
+        manager.connect()
+        queue = manager.get_queue()
+        queue.put('hello world')
+
+    def test_rapid_restart(self):
+        authkey = os.urandom(32)
+        manager = QueueManager(
+            address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+        manager.start()
+
+        p = self.Process(target=self._putter, args=(manager.address, authkey))
+        p.start()
+        queue = manager.get_queue()
+        self.assertEqual(queue.get(), 'hello world')
+        manager.shutdown()
+        manager = QueueManager(
+            address=('localhost', 9999), authkey=authkey, serializer=SERIALIZER)
+        manager.start()
+
 #
 #
 #

Modified: python/branches/release26-maint/Misc/NEWS
==============================================================================
--- python/branches/release26-maint/Misc/NEWS	(original)
+++ python/branches/release26-maint/Misc/NEWS	Mon Mar 30 18:19:10 2009
@@ -92,6 +92,13 @@
 Library
 -------
 
+- Issue #5177: Multiprocessing's SocketListener class now uses 
+  socket.SO_REUSEADDR on all connections so that the user no longer needs
+  to wait 120 seconds for the socket to expire.
+
+- Adjusted _tkinter to compile without warnings when WITH_THREAD is not
+  defined (part of issue #5035).
+
 - Issue #5561: Removed the sys.version_info shortcuts from platform's
   python_version() and python_version_tuple() since they produced different
   output compared to previous Python versions.


More information about the Python-checkins mailing list