title: Why is urllib.request.urlopen blocking in this case?
body: <p>In the following code</p>
  
  <pre><code>def sendPostRequest():
    request = urllib.request.Request(myURL, myBody, myHeaders)
    print("created POST request", request)
    response = urllib.request.urlopen(request)
    print("finished POST", response)
  
  for i in range(5):
    t = threading.Thread(target=sendPostRequest)
    t.daemon = True  # thread dies when main thread (only non-daemon thread) exits.
    t.start()
  </code></pre>
  
  <p>, the line <code>print("finished POST", response)</code> is never reached, while I can observe in the server logs that the request arrived successfully. The line <code>print("created POST request", request)</code> is reached however. 
  Why is this the case?</p>