gpt4 book ai didi

"[Errno -2] Name or service not known"上的 Python 套接字 block ?

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:56 26 4
gpt4 key购买 nike

我在 Tornado IOLoop 中异步运行非阻塞套接字。但是,尽管如此,有时会发生阻塞(如 0% CPU 所证明),并且总是导致 Errorno -2 Name or service not known

为什么会这样?

它会阻塞大约五秒钟(至少是超时的两倍多)。在任何给定时间可能有 15-30 个打开的套接字,通过 setsockopt 标志重复使用。

套接字:

    # make connection   
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.settimeout(2) # 2 seconds timeout

ioloop.add_callback(self.connect, s)

Tornado 错误警告:

WARNING:tornado.general:Connect error on fd 23: [Errno -2] Name or service not known

最佳答案

不确定这是否是答案,但我认为它有帮助(见第三段):

        s = socket.socket(socket.AF_INET, socket.SOCK_STREAM, 0)
s.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
s.settimeout(2) # 2 seconds timeout

streamloop.add_callback(self.connect, s)

# added this to close sockets completely after use. might help.
l_onoff = 1
l_linger = 0
s.setsockopt(socket.SOL_SOCKET, socket.SO_LINGER, struct.pack('ii', l_onoff, l_linger))

关于 "[Errno -2] Name or service not known"上的 Python 套接字 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14846073/

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