繁体   English   中英

Python sockets连接超时问题

[英]Python sockets connection timeout problem

我正在尝试编写一个连接到freenode IRC网络(端口6667上的irc.freenode.net)的简单脚本,以定期在频道上发布信息。 为此,我使用了 Python sockets。 这在过去工作得很好,但是现在我遇到了一个奇怪的问题:如果连接的话,套接字需要很长时间才能连接(它偶尔会超时)。 但是,这只发生在从文件运行脚本时。 当直接输入解释器时,它可以正常工作:

>>> import socket
>>> def f():
>>>    s = socket.socket()
>>>    print("Connecting")
>>>    s.connect(('irc.freenode.net', 6667))
>>>    print("Connected")
>>>    s.close()
>>> f()

套接字在大约一秒钟内连接,一切都很好。 但是,如果我将以下代码放在一个文件中并运行python test.py ,它会挂在s.connect上并且偶尔会超时:

import socket
s = socket.socket()
print("Connecting")
s.connect(('irc.freenode.net', 6667))
print("Connected")
s.close()

我以前从未遇到过这个问题。 这也发生在我网络上的其他计算机上(也许是网络问题?)。 我正在使用 Python 3.2。 谢谢。

网络总是有间歇性的问题,你的代码需要处理它们。 我建议采取两个层面的行动。 首先,使用socket.create_connection上的timeout=参数在放弃之前等待更长的时间。 然后将套接字开口放在一个try中, except socket.timeout对并重试几次,可能在重试之间睡一两秒钟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM