# complete socket interface as used by socket._fileobject: class ClosedSocket(object): def recv(self,size=-1): return '' def sendall(self,buf): pass def close(self): pass def fileno(self): return -1 CLOSED_SOCKET = ClosedSocket() class FileObject(socket._fileobject): def close(self): try: if self._sock: self.flush() finally: if self._close: self._sock.close() self._sock = CLOSED_SOCKET @property def closed(self): return self._sock is CLOSED_SOCKET