Enviar archivo más grande que la ventana

Enviar archivo más grande que la ventana

de Diego Julio Bartolome Estol -
Número de respuestas: 5

Hola, consultando con varios grupos, los que usamos la libreria hyper-h2 de python tenemos el mismo problema y no sabemos resolverlo. 

Al querer enviar un archivo desde el servidor a un cliente, si el tamaño de este archivo es mayor al local_flow_control_window, obtenemos un error, por lo que enviamos el archivo de a pedazos, pero cada pedazo enviado disminuye la ventana (local_flow_control_window) hasta llegar a 0, lo que hace que no podamos seguir enviando el archivo y no podemos incrementar esta variable, leyendo la documentación de hyper-h2 la forma que encontramos de incrementar la ventana es mediante increment_flow_control_window(increment, stream_id=None) la cual nos genera el evento WindowUpdated pero no incrementa el valor de local_flow_control_window que se mantiene en 0. 

Hay alguna otra forma de incrementar esta variable?

Hasta ahora solo podemos enviar archivos de tamaño menor que la ventana.

Muchas gracias.

Saludos.

En respuesta a Diego Julio Bartolome Estol

Re: Enviar archivo más grande que la ventana

de Martin Giachino -

Comentando con algunos grupos en el monitoreo de ayer, parecería que alguien lo pudo resolver o estaba cerca de resolverlo.

A quin lo logre, decirle que puede decir cómo lo hizo y ayudar a los compañeros que están trancados con eso. Dado que al parecer es un error/limitante de la biblioteca y no hace al objetivo del obligatorio, no habrá problemas si ponen en el eva cómo lo resolvieron.

Igualmente aclaro, acoten y revisen antes de publicar, y que lo que publiquen en el eva sea lo mínimo y necesario para resolver este detalle y no mas, y mucho menos si está relacionado directamente con los objetivos del obligatorio.


Martín

En respuesta a Martin Giachino

Re: Enviar archivo más grande que la ventana

de Nicolas Nocetti Lago -

Hola, nosotros pudimos enviar archivos de hasta 5mb.

En el servidor hay que fraccionar los archivos en varias frames de datos, fijándose en lo que devuelve:

conn.max_outbound_frame_size

conn.local_flow_control_window(stream_id)

En el cliente, a medida que reciben los frames de datos tienen que informar al servidor que aumente el tamaño de la ventana del stream y de la ventana de conexión (son 2 ventanas, una para el stream en particular y otra para toda la conexión).

Esto se hace con los métodos:

conn.increment_flow_control_window(length, stream_id)

y luego

conn.increment_flow_control_window(length)

en el segundo caso, al no indicar un stream especifico se aumenta la ventana que regula toda la conexión.

Espero les sirva.


Slds


En respuesta a Nicolas Nocetti Lago

Re: Enviar archivo más grande que la ventana

de Michell Andres Vanrell Escalante -

Gracias por la info, al menos sirve para saber que nuestro grupo esta encaminado pero sinceramente no le encontramos la vuelta para que la ventana local (la del lado del server) se incremente por lo que, si bien multiplexamos los envios no podemos mandar mas de 64Kb por la conexión :(. La documentación es bastante confusa en algunos casos y en otros muy escasa, pero bueno seguiremos investigando...


Gracias.

En respuesta a Michell Andres Vanrell Escalante

Re: Enviar archivo más grande que la ventana

de Martin Giachino -

El mensaje de los compañeros que explican como logran pasar archivos de hasta 5MB dice textualmente:

"En el servidor hay que fraccionar los archivos en varias frames de datos......."

Ellos mismos te están diciendo allí lo que tienes que hacer para que funcione.

De todas formas, si bien es importante pasar archivos, más importante es que se estén multiplexando. Cuando tú dices que "si bien multiplexamos los envios no podemos mandar mas de 64Kb por la conexión", ¿comprobaste con wireshark o alguna herramienta que se está multiplexando eso dentro de la conexión? Si la respuesta es que sí, entonces una parte importante está lograda. Yo diría que si aún les quedan funcionalidades por implementar sigan con esas y luego si les queda tiempo retomen el envío de archivos grandes.

Martín

En respuesta a Martin Giachino

Re: Enviar archivo más grande que la ventana

de Michell Andres Vanrell Escalante -

Gracias por todos los comentarios, finalmente ya pudimos, estaba realizando en primer lugar el incremento de la ventana equivocada y en segundo lugar, luego de corregir lo primero, el incremento me quedaba el en buffer :(.

Por suerte mi compañero estaba más lucido que yo jaja