"R. David Murray" email@example.com:
PS: I recently switched from using selectors to using a timeout on a socket because in that particular application I could, and because reading a socket with a timeout handles EINTR (in recent python versions), whereas reading a non-blocking socket doesn't. Under the hood, a socket with a timeout is a non-blocking socket.
Under what circumstances would a nonblocking socket generate an EINTR?
I believe the biggest EINTR problem child is file I/O, which is always blocking in linux.