mirror of https://github.com/python/cpython.git
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
|
@ -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…
Reference in New Issue