¿Se agota el tiempo de descarga de un archivo con Python urllib?

Python principiante aquí. Quiero poder suspender mi descarga de un archivo de video si el proceso demora más de 500 segundos.

import urllib try: urllib.urlretrieve ("http://www.videoURL.mp4", "filename.mp4") except Exception as e: print("error") 

¿Cómo modifico mi código para que eso suceda?

Una mejor manera es utilizar las requests para que pueda transmitir los resultados y verificar fácilmente los tiempos de espera:

 import requests # Make the actual request, set the timeout for no data to 10 seconds and enable streaming responses so we don't have to keep the large files in memory request = requests.get('http://www.videoURL.mp4', timeout=10, stream=True) # Open the output file and make sure we write in binary mode with open('filename.mp4', 'wb') as fh: # Walk through the request response in chunks of 1024 * 1024 bytes, so 1MiB for chunk in request.iter_content(1024 * 1024): # Write the chunk to the file fh.write(chunk) # Optionally we can check here if the download is taking too long 

urlretrieve no tiene esa opción. Pero puede realizar fácilmente su ejemplo con la ayuda de urlopen y escribir el resultado en un archivo, así:

 request = urllib.urlopen("http://www.videoURL.mp4", timeout=500) with open("filename.mp4", 'wb') as f: try: f.write(request.read()) except: print("error") 

Eso es si está usando Python 3. Si está usando Python 2, debería usar urllib2.