common.timeoutsocket (version 1.3)
index
e:\bothans\common\timeoutsocket.py

Timeout Socket
 
This module enables a timeout mechanism on all TCP connections.  It
does this by inserting a shim into the socket module.  After this module
has been imported, all socket creation goes through this shim.  As a
result, every TCP connection will support a timeout.
 
The beauty of this method is that it immediately and transparently
enables the entire python library to support timeouts on TCP sockets.
As an example, if you wanted to SMTP connections to have a 20 second
timeout:
 
    import timeoutsocket
    import smtplib
    timeoutsocket.setDefaultSocketTimeout(20)
 
 
The timeout applies to the socket functions that normally block on
execution:  read, write, connect, and accept.  If any of these 
operations exceeds the specified timeout, the exception Timeout
will be raised.
 
The default timeout value is set to None.  As a result, importing
this module does not change the default behavior of a socket.  The
timeout mechanism only activates when the timeout has been set to
a numeric value.  (This behavior mimics the behavior of the
select.select() function.)
 
This module implements two classes: TimeoutSocket and TimeoutFile.
 
The TimeoutSocket class defines a socket-like object that attempts to
avoid the condition where a socket may block indefinitely.  The
TimeoutSocket class raises a Timeout exception whenever the
current operation delays too long. 
 
The TimeoutFile class defines a file-like object that uses the TimeoutSocket
class.  When the makefile() method of TimeoutSocket is called, it returns
an instance of a TimeoutFile.
 
Each of these objects adds two methods to manage the timeout value:
 
    get_timeout()   -->  returns the timeout of the socket or file
    set_timeout()   -->  sets the timeout of the socket or file
 
 
As an example, one might use the timeout feature to create httplib
connections that will timeout after 30 seconds:
 
    import timeoutsocket
    import httplib
    H = httplib.HTTP("www.python.org")
    H.sock.set_timeout(30)
 
Note:  When used in this manner, the connect() routine may still
block because it happens before the timeout is set.  To avoid
this, use the 'timeoutsocket.setDefaultSocketTimeout()' function.
 
Good Luck!

 
Modules
            
select
string
 
Classes
            
exceptions.Exception
Timeout
TimeoutFile
TimeoutSocket
 
class Timeout(exceptions.Exception)
       
   Data and non-method functions defined here:
__doc__ = None
__module__ = 'common.timeoutsocket'

Methods inherited from exceptions.Exception:
__getitem__(...)
__init__(...)
__str__(...)
 
class TimeoutFile
      TimeoutFile object
Implements a file-like object on top of TimeoutSocket.
 
   Methods defined here:
__getattr__(self, key)
__init__(self, sock, mode='r', bufsize=4096)
close(self)
flush(self)
read(self, size=-1)
readline(self, size=-1)
readlines(self, sizehint=-1)
write(self, data)

Data and non-method functions defined here:
__doc__ = 'TimeoutFile object\n Implements a file-like object on top of TimeoutSocket.\n '
__module__ = 'common.timeoutsocket'
 
class TimeoutSocket
      TimeoutSocket object
Implements a socket-like object that raises Timeout whenever
an operation takes too long.
The definition of 'too long' can be changed using the
set_timeout() method.
 
   Methods defined here:
__getattr__(self, key)
__init__(self, sock, timeout)
accept(self, dumbhack=None)
close(self)
connect(self, addr, port=None, dumbhack=None)
connect_ex(self, addr)
get_timeout(self)
makefile(self, flags='r', bufsize=-1)
recv(self, bufsize, flags=0)
send(self, data, flags=0)
set_timeout(self, timeout=None)
setblocking(self, blocking)

Data and non-method functions defined here:
__doc__ = 'TimeoutSocket object\n Implements a socket-lik... changed using the\n set_timeout() method.\n '
__module__ = 'common.timeoutsocket'
_blocking = 1
_copies = 0
 
Data
             AF_INET = 2
SOCK_STREAM = 1
_AcceptBusy = (10035,)
_ConnectBusy = (10035,)
_DefaultTimeout = 1.0
_IsConnected = (10022, 10056)
__author__ = "Timothy O'Malley <timo@alum.mit.edu>"
__file__ = r'e:\bothans\common\timeoutsocket.pyc'
__name__ = 'common.timeoutsocket'
__version__ = '$Revision: 1.3 $'
 
Author
             Timothy O'Malley <timo@alum.mit.edu>