◐ Shell
clean mode source ↗

Message 184882 - Python tracker

> After digging a bit further it seems EAGAIN occurs in case a timeout was previously 
> set against the socket as in ftplib.FTP(..., timeout=2) (at least on Linux, FWICT).

Ah, indeed. That's because socket timeout makes the underlying fd non-blocking.
Which means there probably should be a higher-level sendfile() facility for sockets, taking into account the socket timeout...