Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema PeRy
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()

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema PeRy
Hola de nuevo Javi, Vale ya lo tengo... no era solo escribir lo recibido en cada pasada sino quitar los buff+= muchas gracias a todos por vuestro tiempo! El lun., 22 abr. 2019 a las 20:43, lasizoillo () escribió: > Tiene toda la pinta de ser lo que te dice Alexis Roda. Piensa que cada vez > qu

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema PeRy
Hola Javi, he probado de esa manera y sigue igual... paso código por si estoy haciendo algo mal: with open(archivo, 'wb') as f: buf = socket_cliente.recv(4) # cabecera con elt amaño del archivo filesize = struct.unpack('!I', buf)

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema Alexis Roda
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 cas

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema lasizoillo
Tiene toda la pinta de ser lo que te dice Alexis Roda. Piensa que cada vez que haces crecer buf (buf+=recv(...)) pasa lo siguiente: - buf apunta a obj1 en memoria - lees el dato del socket creando obj2, también en memoria - reserva el espacio para obj3 en memoria cuyo tamaño será aprox la suma de l

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema PeRy
Hola de nuevo Alex, sigue igual. Veo que por http la velocidad es FULL siempre, he abierto un servidor http: python -m http.server 9000 he probado a descargar un archivo y va siempre a 10-11Mb/s. Tal vez la mejor opción es tirar por ahí... pero me parece muy pesado utilizar un servidor http solo

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema PeRy
Hola! el archivo es de 400MB, la transferencia empieza a todo lo que da la PI (10-11Mb/s estoy en LAN) para después bajar a 2Mb/s y a partir de los 200Megas descargados aproximadamente va bajando progresivamente terminando en menos de 0.5Mb/s, Con otro archivo de mayor tamaño (1.6Gb) es igual, a pa

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema Alexis Roda
Hola, tal vez el problema es que guardas en memoria el archivo, en una cadena. Las cadenas son inmutables, eso significa que la linea "buf += socket_cliente(...)" hace algo parecido a: - reserva un nuevo bloque de memoria - copia el valor original de buf - copia el valor devuelto por la función e

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema PeRy
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 () escribió: > Hola RePy > > Los web sockets, no son buenos para enviar archivos, es mej

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema AGTUGO
Que tan grande el archivo? Cuanto es mucho tiempo? On Sun, Apr 21, 2019 at 5:50 PM PeRy 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 ma

Re: [Python-es] Transferencia archivos grandes en socket

2019-04-22 Por tema DiegoUG
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]