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
- SyntaxError: unexpected EOF while parsing
- How do I lowercase a string in Python?
- How do I copy a file in Python?
- How can I reverse a list in Python?
- Manually raising (throwing) an exception in Python
- How do I copy a file in Python?
- can’t multiply sequence by non-int of type ‘float’
- Difference between del, remove, and pop on lists
- How can I reverse a list in Python?
- How to use the pass statement
- How to use filter, map, and reduce in Python 3
- What does enumerate() mean?
- Searching the student-t distribution table for values using python
- How to declare an array in Python?
- Does Python have a ternary conditional operator?
- Use Gif Logo For Loading Screen In Kivy
- Praw & Discord.py: The bot keep sending the same meme. I want the bot to send different meme whenever it is asked
- Pig Latin Translator
- What is the difference between Python’s list methods append and extend?
- How can I make a time delay in Python? [duplicate]
- Python – TypeError: ‘int’ object is not iterable
- TypeError: ‘int’ object is not subscriptable
- sphinx.ext.autodoc: Keeping names of constants in signature
- are there dictionaries in javascript like python?
- How do you round UP a number?
- Understanding slice notation
- Iterating over dictionaries using ‘for’ loops
- How to define a two-dimensional array?
- how to sort pandas dataframe from one column
- Why am I seeing “TypeError: string indices must be integers”?
- How do you round UP a number?
- Understanding slice notation
- TypeError: only integer scalar arrays can be converted to a scalar index with 1D numpy indices array
- How do I update\upgrade pip itself from inside my virtual environment?
- How to open a file using the open with statement
- How to emulate a do-while loop?
- How do I update\upgrade pip itself from inside my virtual environment?
- How to comment out a block of code in Python [duplicate]
- Microsoft Visual C++ 14.0 is required (Unable to find vcvarsall.bat)
- Using “with open() as file” method, how to write more than once? [duplicate]
- TypeError: list indices must be integers or slices, not str
- Why there is no do while loop in python
- How do I get a substring of a string in Python?
- How do I sort a dictionary by value?
- ImportError: DLL load failed: The specified module could not be found
- How do I sort a dictionary by value?
- How to prettyprint a JSON file?
- What does the “yield” keyword do?
- ImportError: DLL load failed: The specified module could not be found
- Replacements for switch statement in Python?
- How to install pip with Python 3?
- What is the difference between rw+ and r+
- What does ** (double star/asterisk) and * (star/asterisk) do for parameters?
- Renaming column names in Pandas
- How to reset index in a pandas dataframe? [duplicate]
- pip not recognised as an internal or external command
- Correct way to write line to file?
- Python: Find in list
- Does Python have a string ‘contains’ substring method?
- Is there a “not equal” operator in Python?
- IndexError: list index out of range and python
- How to read a file line-by-line into a list?
- Delete a column from a Pandas DataFrame
- strip(char) on a string
- Python – TypeError: ‘int’ object is not iterable
- How do I sort a dictionary by value?
- Import Error: No module named numpy
- How to deal with SettingWithCopyWarning in Pandas
- How to update/upgrade a package using pip?
- How to deal with SettingWithCopyWarning in Pandas
- ‘Syntax Error: invalid syntax’ for no apparent reason
- Python exit commands – why so many and when should each be used?
- How can I represent an infinite number in Python?
- Constructing pandas DataFrame from values in variables gives “ValueError: If using all scalar values, you must pass an index”
- How to iterate over rows in a DataFrame in Pandas
- pandas read_json: “If using all scalar values, you must pass an index”
- How to iterate over rows in a DataFrame in Pandas
- What is the Python equivalent for a case/switch statement? [duplicate]
- Web scraping redoc web api
- TypeError: ‘NoneType’ object is not iterable in Python
- Python: ‘ModuleNotFoundError’ when trying to import module from imported package
- Relative imports – ModuleNotFoundError: No module named x
- bash: pip: command not found
- Static methods in Python?
- Check if a given key already exists in a dictionary
- ValueError: invalid literal for int() with base 10: ”