Hola Alexis, despues de eliminar el buf+= y escribir directamente lo recibido en el momento ya me funciona a tope!!
asi se me queda el codigo while filesize: to_read = filesize - len(buf) tiempo_descarga_inicio = datetime.datetime.now() recibido = socket_cliente.recv(262144 if to_read > 262144 else to_read) #8192 1024*8 o 4096 1024*4 #buf += recibido # buf es el total recibido tiempo_descarga_final = datetime.datetime.now() tiempo_diferencia_descarga = tiempo_descarga_final - tiempo_descarga_inicio a = tiempo_diferencia_descarga.total_seconds() try: speed_transfer = ('{:.2f}MB/s'.format((len(recibido)/a)/1000000)) # a MByte updt(filesize, progreso, speed_transfer) <---- tengo que averiguar como sacar el progreso de lo recibido except ZeroDivisionError: pass filesize -=len(recibido) f.write(recibido) tiempo_final = datetime.datetime.now() print( tiempo_final.strftime('%H:%M:%S')) diferencia_tiempo = tiempo_final - tiempo_inicio print('{:.2f} segundos'.format(diferencia_tiempo.total_seconds())) # typo float muchisimas gracias por vuestro tiempo! un saludo! El lun., 22 abr. 2019 a las 21:16, Alexis Roda (< alexis.roda.villalo...@gmail.com>) escribió: > Hola, > ¿sigue igual después de hacer que cambios al código? > > Antes de que se inventara HTTP se transferían archivos, así que sí, es > viable transferir con sockets a pelo. DiegoUG habla de web sockets, pero > son una bestia totalmente distinta de los sockets. > > ¿Es HTTP una opción viable? depende del caso de uso. > > Prueba con estos cambios en el cliente: > > while len(buf) < filesize: > to_read = filesize - len(buf) > buf = socket_cliente.recv(262144 if to_read > > 262144 else to_read) #8192 1024*8 o 4096 1024*4 > f.write(buf) > updt(filesize, len(buf)) # barra de progreso > # f.write(buf) > > De esta forma solo se mantiene en memoria un bloque, no el archivo entero. > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es > -- Pedro Luis Gavira Garcia Transitario - Comercio Exterior - Aduanas Transitarios de Ciudad Real pedrol...@transitarioscr.com http://www.aduanasciudadreal.com.es/ Tlfno. +34 647 426 639
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es