[Python-es] Transferencia archivos grandes en socket
AGTUGO
agtugo en gmail.com
Lun Abr 22 13:13:25 EDT 2019
Que tan grande el archivo? Cuanto es mucho tiempo?
On Sun, Apr 21, 2019 at 5:50 PM PeRy <perysoy en gmail.com> wrote:
>
> Buenas! Estoy aprendiendo Python y estoy con el tema de los sockets, he
> creado un servidor y cliente para enviar archivos. Me he dado cuenta que en
> archivos grandes cuanto mas pasa el tiempo mas lenta se hace la recepción
> de la información, ¿alguna sugerencia por qué pasa y como se podría evitar?
> mi codigo:
>
> server:
>
> =============================================================================================
> elif b'\F' in data: # peticion de archivo para ser descargado
> transmitido = data.rstrip(b'\F')
> comparte_dir = os.path.join(os.getcwd(), 'compartir')
> print(os.path.join(comparte_dir, transmitido.decode()))
> filesize = os.path.getsize(os.path.join(comparte_dir,
> transmitido.decode()))
> print("TAMAÑO: {}".format(filesize))
> with open(os.path.join(comparte_dir, transmitido.decode()), 'rb') as f:
> self.socket.send(struct.pack('!I', filesize)) # enviamos en los primeros
> 4bytes el tamaño del archivo
> numero_bytes = self.socket.sendfile(f)
> # data = f.read(8192)
> # numero_bytes = len(data)
> # self.socket.send(data)
> # while data:
> # data = f.read(8192)
> # self.socket.send(data)
> # numero_bytes += len(data)
> print(numero_bytes)
>
> cliente:
>
> ===============================================================================================
> with open(archivo, 'wb') as f:
> buf = socket_cliente.recv(4) # cabecera con elt
> amaño del archivo
> filesize = struct.unpack('!I', buf)
> print("filesize : {}".format(filesize))
> filesize=filesize[0]
> buf = b''
> tiempo_inicio = datetime.datetime.now()
> print(tiempo_inicio.strftime('%H:%M:%S'))
> 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
> updt(filesize, len(buf)) # barra de progreso
> f.write(buf)
>
> ---------------------
> Muchas Gracias y un saludo
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
>
--
Arturo Muñoz Tolosa
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20190422/9aa64e39/attachment.html>
Más información sobre la lista de distribución Python-es