2009-02-23 20 views
5

Estoy buscando en apoyo HTTP/1.1 Byte serving en WSGI servidor/aplicación para:bytes WSGI oscila servir

  • reanudar descargas parciales
  • descargas de múltiples partes
  • una mejor transmisión de

WSGI PEP 333 menciones que el servidor WSGI puede implementar el manejo de la porción de bytes (desde RFC 2616 sección 14.35.2 define Accept-Range/Range/Content-Range respuesta/solicitud/respuesta h eaders) y la aplicación debe implementar si anuncia la capacidad de:

Un servidor puede transmitir niveles de bytes de la respuesta de la solicitud, si solicitado por el cliente, y la aplicación no soporta de forma nativa niveles de bytes. De nuevo, sin embargo, la aplicación debe realizar esta función por sí sola si así lo desea.

Realicé algunas búsquedas en Google pero encontré poca información sobre cuáles de los servidores/middleware/aplicaciones WSGI disponibles implementan Byte-Ranges? ¿Alguien tiene una experiencia en el campo y puede indicarme el lugar para cavar más?

EDIT: ¿Alguien puede comentar, cómo puedo mejorar la pregunta para poder encontrar una respuesta?

+0

Si no tiene suerte aquí, intente http://mail.python.org/mailman/listinfo/web-sig. Personalmente, no creo que los rangos de bytes y wsgi encajen. – Constantin

+0

Hará. Incluso he preparado una publicación en mis borradores, que está esperando uno o dos días para ver si hay alguna respuesta aquí. – myroslav

Respuesta

3

Creo que webob puede hacer el truco, consulte el final de file example para una implementación de solicitud de rango que busque eficientemente en el archivo que se sirve.

0

Solo necesita usar WebOb y crear la respuesta como Response(conditional_request=True) o subclass the WebOb Response object haciendo conditional_request=True el valor predeterminado.

Cuando conditional_request=True y la solicitud solicitó un rango, el Response.app_iter_range de WebOb ajusta la respuesta completa para devolver solo el rango solicitado.

El WebOb file serving example muestra cómo implementaría su propio app_iter_range para casos en los que es práctico obtener un rango de bytes sin generar toda la respuesta.