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

Responder a