title: How to empty a socket in python?
body: <p>I need to empty the data on a socket (making sure that there is nothing to receive).
  Unfortunately, there is no function for this in the python socket module.</p>
  
  <p>I've implemented something this way:</p>
  
  <pre><code>def empty_socket(sock):
      """remove the data present on the socket"""
      input = [sock]
      while 1:
          inputready, o, e = select.select(input,[],[], 0.0)
          if len(inputready)==0: break
          for s in inputready: s.recv(1)
  </code></pre>
  
  <p>What do you think? Is there a better way to do that?</p>
  
  <hr>
  
  <p>Update: I don't want to change the socket timeout. What's why i prefer a select to a read.</p>
  
  <hr>
  
  <p>Update: The original question was using the 'flush' term. It seems that 'empty' is a better term.</p>
  
  <hr>
  
  <p>Update - 2010-02-27 :
  I've noticed a bug when the pair has closed. The inputready is always filled with the sockets. I fixed that by adding a maximum number of loops. Is there a better fix?</p>