我正在尝试编写一个连接到freenodeirc网络的简单脚本(irc.freenode.net在端口6667上)定期在信道上发布信息。为此,我使用Python套接字。这在过去一直很好地工作,但是现在我遇到了一个奇怪的问题:如果连接到插座的话,它需要花费非常长的时间来连接(它偶尔会超时)。但是,只有从文件运行脚本时才会发生这种情况。当直接输入到解释程序中时,效果很好:
>>> import socket
>>> def f():
>>> s = socket.socket()
>>> print("Connecting")
>>> s.connect(('irc.freenode.net', 6667))
>>> print("Connected")
>>> s.close()
>>> f()
插座在一秒钟内接通,一切正常。但是,如果我将以下代码放入一个文件并运行python测试.py,它挂起s.connect
并偶尔超时:
我以前从没遇到过这个问题。在我的网络上的其他计算机上也会发生这种情况(可能是网络问题?)。我使用的是python3.2。谢谢。在
网络总是有间歇性的问题,您的代码需要处理这些问题。我建议采取两个层次的行动。首先,在
socket.create_connection
上使用timeout=
参数,等待一段时间后再放弃。然后将插座开口放在try
except socket.timeout
对中,然后重试几次,可能在重试之间睡一两秒钟。在相关问题 更多 >
编程相关推荐