加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

Python套接字连接超时问题

发布时间:2020-12-20 13:23:31 所属栏目:Python 来源:网络整理
导读:我正在尝试编写一个连接到freenode IRC网络(端口6667上的irc.freenode.net)的简单脚本,以定期在频道上发布信息.为此,我使用的是 Python套接字.这在过去一直运行良好,但是现在我遇到了一个奇怪的问题:如果套接字完全没有(它偶尔会超时),那么套接字需要很长时
我正在尝试编写一个连接到freenode IRC网络(端口6667上的irc.freenode.net)的简单脚本,以定期在频道上发布信息.为此,我使用的是 Python套接字.这在过去一直运行良好,但是现在我遇到了一个奇怪的问题:如果套接字完全没有(它偶尔会超时),那么套接字需要很长时间才能连接.但是,这仅在从文件运行脚本时发生.直接输入解释器时,它可以正常工作:

>>> 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除了socket.timeout对之外,并重试几次,可能在重试之间休息一两秒.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读