mirror of https://github.com/docker/docker-py.git
socket: use poll() instead of select() except on Windows (#2865)
Fixes #2278, which was originally addressed in #2279, but was not properly merged. Additionally it did not address the problem of poll not existing on Windows. This patch falls back on the more limited select method if host system is Windows. Signed-off-by: Tyler Westland <tylerofthewest@gmail.com>
This commit is contained in:
parent
aaf68b7f98
commit
a02ba74333
|
@ -3,6 +3,7 @@ import os
|
|||
import select
|
||||
import socket as pysocket
|
||||
import struct
|
||||
import sys
|
||||
|
||||
try:
|
||||
from ..transport import NpipeSocket
|
||||
|
@ -31,7 +32,13 @@ def read(socket, n=4096):
|
|||
recoverable_errors = (errno.EINTR, errno.EDEADLK, errno.EWOULDBLOCK)
|
||||
|
||||
if not isinstance(socket, NpipeSocket):
|
||||
select.select([socket], [], [])
|
||||
if sys.platform == 'win32':
|
||||
# Limited to 1024
|
||||
select.select([socket], [], [])
|
||||
else:
|
||||
poll = select.poll()
|
||||
poll.register(socket)
|
||||
poll.poll()
|
||||
|
||||
try:
|
||||
if hasattr(socket, 'recv'):
|
||||
|
|
Loading…
Reference in New Issue