def _recv(sock, timeout, size):
buf = ''
for _ in range(2):
try:
buf = sock.recv(size)
break
except socket.error as e:
if len(e.args) <= 0 or e.args[0] != errno.EAGAIN:
raise
evin, evout, everr = select.select(
[sock.fileno()], [], [], timeout)
if len(evin) <= 0:
raise socket.timeout(
'{second}s timeout while recv'.format(second=timeout))
if len(buf) <= 0:
raise socket.error('got empty when recv {l} bytes'.format(l=size))
return buf
评论列表
文章目录