mirror of
https://github.com/python/cpython.git
synced 2025-11-01 18:51:43 +00:00
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
1 changed files with 23 additions and 0 deletions
|
|
@ -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…
Add table
Add a link
Reference in a new issue