我有一个套接字,我想在连接时超时,以便我可以取消整个操作,如果它无法连接它还想要使用不需要超时的套接字的makefile。
有没有一种简单的方法可以做到这一点,或者这将是一件困难的事情吗?
python是否允许在连接后重置超时,以便我可以使用makefile并且仍然有套接字连接超时
答案 0 :(得分:82)
在尝试connect()
之前,您只需要使用套接字settimeout()
方法,请注意连接后必须settimeout(None)
将套接字设置为阻塞模式,这样才需要makefile。
这是我正在使用的代码:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.settimeout(10)
sock.connect(address)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
答案 1 :(得分:14)
如果您使用的是Python2.6或更新版本,则使用socket.create_connection
sock = socket.create_connection(address, timeout=10)
sock.settimeout(None)
fileobj = sock.makefile('rb', 0)
答案 2 :(得分:0)
要设置套接字超时,您需要执行以下步骤:
import socket
socks = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
socket.settimeout(10.0)