En PHP uno pude ir mandando datos al cliente (navegador) a medida que los va procesando en el servidor. En Django siempre creé el texto de la respuesta para luego pasársela al objeto HttpResponse. A pesar de que había preguntado varias veces en el canal de chat de Django si podía hacer algo así y me habían respondido que no, tenía la intuición de que algo se podría hacer y pensé en iteradores.
Por suerte este fin de semana tuvimos un gran evento de Python y alojé en mi casa a John, quien me explicó en 5 minutos cómo hacerlo. Aquí una recreación de su ejemplo (views.py):
<code> from django.http import HttpResponse from time import sleep def gen(): for x in range(80): sleep(1) yield '*' * x + '<br/>' def test(request): return HttpResponse(gen(), mimetype='text/html') </code>
Queda para el lector ver la salida en su navegador.
gen es una función que al llamarla devuelve un generador. El primer parámetro de HttpResponse puede ser un generador o cualquier objeto con el método __iter__.
En la misma jornada Nubis, estuvo explorando esto mismo desde distintos ángulos.