mirror of
				https://github.com/python/cpython.git
				synced 2025-10-31 13:41:24 +00:00 
			
		
		
		
	GvR provided solution to the socket rebinding timeout problem.
M PyShell.py M rpc.py M run.py
This commit is contained in:
		
							parent
							
								
									725bb233b9
								
							
						
					
					
						commit
						8dcdb77132
					
				
					 3 changed files with 6 additions and 7 deletions
				
			
		|  | @ -198,16 +198,14 @@ def spawn_subprocess(self): | ||||||
|         args = [sys.executable] + w + ["-c", "__import__('run').main()", |         args = [sys.executable] + w + ["-c", "__import__('run').main()", | ||||||
|                                        str(port)] |                                        str(port)] | ||||||
|         self.rpcpid = os.spawnv(os.P_NOWAIT, args[0], args) |         self.rpcpid = os.spawnv(os.P_NOWAIT, args[0], args) | ||||||
|         # Idle starts listening for connection on localhost, retry since |         # Idle starts listening for connection on localhost | ||||||
|         # Idle may be restarted before port is available for rebinding |         for i in range(6): | ||||||
|         # XXX 25 July 2002 KBK Find out what is causing the delayed release! |  | ||||||
|         for i in range(12): |  | ||||||
|             time.sleep(i) |             time.sleep(i) | ||||||
|             try: |             try: | ||||||
|                 self.rpcclt = rpc.RPCClient(addr) |                 self.rpcclt = rpc.RPCClient(addr) | ||||||
|                 break |                 break | ||||||
|             except socket.error, err: |             except socket.error, err: | ||||||
|                 if i < 5: |                 if i < 3: | ||||||
|                     print>>sys.__stderr__, ". ", |                     print>>sys.__stderr__, ". ", | ||||||
|                 else: |                 else: | ||||||
|                     print>>sys.__stderr__,"\nIdle socket error: " + err[1]\ |                     print>>sys.__stderr__,"\nIdle socket error: " + err[1]\ | ||||||
|  |  | ||||||
|  | @ -403,6 +403,7 @@ class RPCClient(SocketIO): | ||||||
| 
 | 
 | ||||||
|     def __init__(self, address, family=socket.AF_INET, type=socket.SOCK_STREAM): |     def __init__(self, address, family=socket.AF_INET, type=socket.SOCK_STREAM): | ||||||
|         self.sock = socket.socket(family, type) |         self.sock = socket.socket(family, type) | ||||||
|  |         self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) | ||||||
|         self.sock.bind(address) |         self.sock.bind(address) | ||||||
|         self.sock.listen(1) |         self.sock.listen(1) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -26,13 +26,13 @@ def main(): | ||||||
|         port = int(sys.argv[1]) |         port = int(sys.argv[1]) | ||||||
|     sys.argv[:] = [""] |     sys.argv[:] = [""] | ||||||
|     addr = ("localhost", port) |     addr = ("localhost", port) | ||||||
|     for i in range(12): |     for i in range(6): | ||||||
|         time.sleep(i) |         time.sleep(i) | ||||||
|         try: |         try: | ||||||
|             svr = rpc.RPCServer(addr, MyHandler) |             svr = rpc.RPCServer(addr, MyHandler) | ||||||
|             break |             break | ||||||
|         except socket.error, err: |         except socket.error, err: | ||||||
|             if i < 5: |             if i < 3: | ||||||
|                 print>>sys.__stderr__, ".. ", |                 print>>sys.__stderr__, ".. ", | ||||||
|             else: |             else: | ||||||
|                 print>>sys.__stderr__,"\nPython subprocess socket error: "\ |                 print>>sys.__stderr__,"\nPython subprocess socket error: "\ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Kurt B. Kaiser
						Kurt B. Kaiser