mirror of https://github.com/python/cpython
SF patch 555085 (timeout socket implementation) by Michael Gilfix.
I've made considerable changes to Michael's code, specifically to use the select() system call directly and to store the timeout as a C double instead of a Python object; internally, -1.0 (or anything negative) represents the None from the API. I'm not 100% sure that all corner cases are covered correctly, so please keep an eye on this. Next I'm going to try it Windows before Tim complains. No way is this a bugfix candidate. :-)
This commit is contained in:
parent
15699055e9
commit
be946bfea7
|
@ -514,6 +514,29 @@ all sockets are in blocking mode. In non-blocking mode, if a
|
|||
block until they can proceed.
|
||||
\end{methoddesc}
|
||||
|
||||
\begin{methoddesc}[socket]{settimeout}{value}
|
||||
Set a timeout on blocking socket operations. Value can be any numeric value
|
||||
or \var{None}. Socket operations will raise an \exception{error} exception
|
||||
if the timeout period \var{value} has elapsed before the operation has
|
||||
completed. Setting a timeout of \var{None} disables timeouts on socket
|
||||
operations.
|
||||
\end{methoddesc}
|
||||
|
||||
\begin{methoddesc}[socket]{gettimeout}{}
|
||||
Returns the timeout in floating seconds associated with socket operations.
|
||||
A timeout of None indicates that timeouts on socket operations are
|
||||
disabled.
|
||||
\end{methoddesc}
|
||||
|
||||
Some notes on the interaction between socket blocking and timeouts:
|
||||
socket blocking mode takes precendence over timeouts. If a socket
|
||||
if set to non-blocking mode, then timeouts set on sockets are never
|
||||
don't mean anything. The timeout value associated with the socket
|
||||
can still be set via settimeout and its value retrieved via gettimeout,
|
||||
but the timeout is never enforced (i.e, an exception will never be
|
||||
thrown). Otherwise, if the socket is in blocking mode, setting the
|
||||
timeout will raise an exception as expected.
|
||||
|
||||
\begin{methoddesc}[socket]{setsockopt}{level, optname, value}
|
||||
Set the value of the given socket option (see the \UNIX{} manual page
|
||||
\manpage{setsockopt}{2}). The needed symbolic constants are defined in
|
||||
|
|
Loading…
Reference in New Issue