Message 100704 - Python tracker
Wrapping select in (taken from twisted sources) can help:
def untilConcludes(f, *a, **kw):
while True:
try:
return f(*a, **kw)
except (IOError, OSError), e:
if e.args[0] == errno.EINTR:
continue
raise