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 (<
[email protected]>) 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
> [email protected]
> https://mail.python.org/mailman/listinfo/python-es
>
--
Pedro Luis Gavira Garcia
Transitario - Comercio Exterior - Aduanas
Transitarios de Ciudad Real [email protected]
http://www.aduanasciudadreal.com.es/
Tlfno. +34 647 426 639
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es