gpt4 book ai didi

python - multiprocessing.connection.Client 连接重试时间

转载 作者:太空宇宙 更新时间:2023-11-03 11:25:39 24 4
gpt4 key购买 nike

在我的一个程序中,我需要在两个进程之间创建连接。我按以下方式使用了 multiprocessing.connection.Client 类:

address = ('192.168.1.128', 6502)
self.conn = multiprocessing.connection.Client(address)

我的问题是:内部如何处理连接重试?如果无法建立连接,我需要处理还是由模块自行处理?如果是这样,怎么做到的?

预先感谢您的回复!

最佳答案

深入研究代码,我发现 multiprocessing.connection.Client 返回一个 SocketClient 连接。在 SocketClient 函数中定义了 20 秒超时。如果在 10 毫秒后在此超时内未建立连接,则会进行另一次尝试。这将持续到无穷大:

CONNECTION_TIMEOUT = 20.    

def _init_timeout(timeout=CONNECTION_TIMEOUT):
return time.time() + timeout

def _check_timeout(t):
return time.time() > t


def SocketClient(address):
'''
Return a connection object connected to the socket given by `address`
'''
family = address_type(address)
s = socket.socket( getattr(socket, family) )
t = _init_timeout()

while 1:
try:
s.connect(address)
except socket.error, e:
if e.args[0] != errno.ECONNREFUSED or _check_timeout(t):
debug('failed to connect to address %s', address)
raise
time.sleep(0.01)
else:
break
else:
raise

fd = duplicate(s.fileno())
conn = _multiprocessing.Connection(fd)
s.close()
return conn

所以我相信我的问题的答案是每次尝试连接时都会启动 20 秒超时。如果此超时在 10 毫秒后过去,则会进行另一次尝试。

关于python - multiprocessing.connection.Client 连接重试时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34525608/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com