Hola Diego, gracias por la sugerencia, voy a leer un poco sobre el protocolo http e intentar mandarlo por http.server a ver si consigo mejores resultados.
Salu2! El lun., 22 abr. 2019 a las 18:30, DiegoUG (<diego.uribe.ga...@gmail.com>) escribió: > Hola RePy > > Los web sockets, no son buenos para enviar archivos, es mejor para > notificar, por ejemplo, lo que puedes hacer es exponer el archivo mediante > una url y enviar la dirección en un mensaje de web socket, para que el > cliente abra (o descargue) el archivo. > > > > [image: Mailtrack] > <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> > Remitente > notificado con > Mailtrack > <https://mailtrack.io?utm_source=gmail&utm_medium=signature&utm_campaign=signaturevirality5&> > 22/04/19 > 11:27:22 > > El dom., 21 de abr. de 2019 a la(s) 19:50, PeRy (pery...@gmail.com) > escribió: > >> >> 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@python.org >> https://mail.python.org/mailman/listinfo/python-es >> > > > -- > *Diego Alonso Uribe Gamez* > ------------------------------ > > *Desarrollador web* > > Twitter: @DiegoUG <http://www.twitter.com/DiegoUG> > > Google+: +DiegoAlonsoUribeGamez > <https://plus.google.com/+DiegoAlonsoUribeGamez> > ------------------------------ > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es