The typical approach is to use select() to wait until data is available or until the timeout occurs. Only call recv()
when data is actually available. To be safe, we also set the socket to non-blocking mode to guarantee that recv()
will never block indefinitely. select()
can also be used to wait on more than one socket at a time.
import select mysocket.setblocking(0) ready = select.select([mysocket], [], [], timeout_in_seconds) if ready[0]: data = mysocket.recv(4096)
If you have a lot of open file descriptors, poll() is a more efficient alternative to select()
.
Another option is to set a timeout for all operations on the socket using socket.settimeout()
, but I see that you’ve explicitly rejected that solution in another answer.
Related Posts:
- gaierror: [Errno 8] nodename nor servname provided, or not known (with macOS Sierra)
- Python [Errno 98] Address already in use
- Error: nodename nor servname provided, or not known (python sockets)
- gaierror: [Errno 8] nodename nor servname provided, or not known (with macOS Sierra)
- Timeout on a function call
- What does socket binding mean?
- Python socket.error: [Errno 111] Connection refused
- python socket programming OSError: [WinError 10038] an operation was attempted on something that is not a socket
- Sending string via socket (python)
- Getting “socket.error: [Errno 61] Connection refused” python paramiko
- Errno 10061 : No connection could be made because the target machine actively refused it ( client – server )
- Python Socket Receive Large Amount of Data
- UDP Client/Server Socket in Python
- Handling a timeout error in python sockets
- Python Progress Bar
- Most efficient way to find mode in numpy array
- Python error “ImportError: No module named”
- How to groupby based on two columns in pandas?
- How do I append one string to another in Python?
- Python Progress Bar
- How to correct TypeError: Unicode-objects must be encoded before hashing?
- Python: list of lists
- How can I split and parse a string in Python?
- numpy matrix vector multiplication
- whitespace in regular expression
- How do I read CSV data into a record array in NumPy?
- Basic explanation of python functions
- TypeError: ‘Series’ objects are mutable, thus they cannot be hashed problemwith column
- How to rename a file using Python
- Cosine Similarity between 2 Number Lists
- How to install python3 version of package via pip on Ubuntu?
- django: TypeError: ‘tuple’ object is not callable
- ValueError: Length of values does not match length of index | Pandas DataFrame.unique()
- ImportError: No module named PIL
- Maximum and Minimum values for ints
- How do I list all files of a directory?
- How to check whether a str(variable) is empty or not?
- Clear variable in python
- Python 3.6.0 syntax error “Missing parentheses in call to ‘print’ [duplicate]
- How to get coverage reporting when testing a pytest plugin?
- TypeError: method() takes 1 positional argument but 2 were given
- How to add title to subplots in Matplotlib
- ‘pip3’ is not recognized as an internal or external command, operable program or batch file
- Apply function to each element of a list
- How to display text in pygame?
- Python Nested Loops To Print Rectangle With Asterisks
- How to fix this strange error: “RuntimeError: CUDA error: out of memory”
- Generate random sentences in python
- Combine two columns of text in pandas dataframe
- How can I rename a conda environment?
- django import error – No module named core.management
- How to change a ‘LinearSegmentedColormap’ to a different distribution of color?
- Using python’s eval() vs. ast.literal_eval()
- How can I stop a While loop?
- Asyncio.gather vs asyncio.wait
- Loop backwards using indices in Python?
- Why do I get a “referenced before assignment” error when assigning to a global variable in a function?
- What does ‘index 0 is out of bounds for axis 0 with size 0’ mean?
- Generate random colors (RGB)
- Python import csv to list
- python SyntaxError: invalid syntax %matplotlib inline
- Count the number of occurrences of a character in a string
- Why does using from __future__ import print_function breaks Python2-style print?
- Download large file in python with requests
- Count unique values per groups with Pandas [duplicate]
- Printing variables in Python 3.4
- Meaning of @classmethod and @staticmethod for beginner?
- Haversine Formula in Python (Bearing and Distance between two GPS points)
- Replacing a character from a certain index
- ValueError: Expected object or value when reading json as pandas dataframe
- ImportError: No module named ‘google’
- ‘int’ object has no attribute ‘append’
- What does the “x for x in” syntax mean?
- Numpy extract submatrix
- How to check if a column exists in Pandas
- How to get line count of a large file cheaply in Python?
- TypeError: decoding str is not supported
- Is there a math nCr function in python?
- How to do a Sigma in python 3
- When to use ‘raise NotImplementedError’?
- TypeError: coercing to Unicode: need string or buffer, list found
- environment variables PYSPARK_PYTHON and PYSPARK_DRIVER_PYTHON
- Pyinstaller setting icons don’t change
- Can not click on a Element: ElementClickInterceptedException in Splinter / Selenium
- How to split elements of a list?
- How can I find script’s directory?
- Porting Perl to Python
- Find object in list that has attribute equal to some value (that meets any condition)
- What is the purpose of the single underscore “_” variable in Python?
- Must have equal len keys and value when setting with an iterable
- print(__doc__) in Python 3 script
- Python IOError: File not open for reading
- Strange Exception in Tkinter callback
- How to resolve “ImportError: DLL load failed:” on Python?
- ‘module’ has no attribute ‘urlencode’
- Cannot concatenate ‘str’ and ‘float’ objects?
- Python Text Menu Infinite Loop
- Install pip for python 3.5
- How do I represent and work with n-bit vectors in Python?
- How to repeat individual characters in strings in Python