CGI con Python y flush() en Apache 2

Para mi sorpresa, un script “correctamente” hecho con python, que procesaba gran cantidad de información, no mandaba su salida en formato HTML hasta que completaba. El usuario debía tener alguna pista visual de qué era lo que estaba haciendo la máquina.

A pesar de usar:

import sys
...
sys.stdout.flush()

… no cambiaba el comportamiento de la página.
Después de googlear un poco, me encuentro con que Apache 2 tiene habilitado por defecto el módulo de compresión (deflate), con lo cual, el sistema espera que termine de renderizar la página, comprime y manda.
Basta con deshabilitar este módulo con:

sudo a2dismod deflate
sudo /etc/init.d/apache2 restart

Con lo que quedó solucionado el problema…
Lo pongo porque se que después me va a pasar lo mismo y voy a terminar… acá.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s