Python sockets突然超时?
今天我回过头来看一个旧的脚本,这个脚本是用来通过SSL登录Gmail的。上一次我运行这个脚本的时候(几个月前)一切都很好,但现在它一运行就出问题了,显示:
<urlopen error The read operation timed out>
如果我设置超时时间(无论多长),它反而更快出问题,显示:
<urlopen error The connect operation timed out>
后面的错误是可以重复出现的,具体情况是:
import socket
socket.setdefaulttimeout(30000)
sock = socket.socket()
sock.connect(('www.google.com', 443))
ssl = socket.ssl(sock)
返回的结果是:
socket.sslerror: The connect operation timed out
但是我似乎无法重复前面的错误,经过仔细检查代码后,我完全不知道是什么导致了这些问题。
4 个回答
0
www.google.com 这个网址不能通过 HTTPS 访问,它会自动跳转到不安全的 HTTP。要访问邮件,你应该直接去 https://mail.google.com 这个链接。
0
我首先会检查你是否需要通过HTTP代理来连接。如果是这样的话,直接连接而不经过代理可能会超时。你可以使用Wireshark这个工具来看看发生了什么情况。
2
import socket
socket.setdefaulttimeout(30000)
sock = socket.socket()
sock.connect(('www.google.com', 443))
ssl = socket.ssl(sock)
ssl.server()
--> '/C=US/ST=California/L=Mountain View/O=Google Inc/CN=www.google.com'
这个没问题。我无法重现你遇到的错误。