Beaucoup de django middleware va vous empêcher de diffusion en continu de contenu. Une grande partie de ce middleware doit être activé si vous souhaitez utiliser l'admin de django app, donc cela peut être une gêne. Heureusement, ce problème a été résolu dans la django 1.5 libérer. Vous pouvez utiliser le StreamingHttpResponse pour indiquer que vous souhaitez diffuser les résultats et toutes les middleware qui est livré avec django est conscient de cela et agit en conséquence à pas de tampon de votre sortie contenu, mais de l'envoyer directement vers le bas de la ligne. Votre code devrait ressembler à la suivante pour utiliser le nouveau StreamingHttpResponse objet.
def stream_response(request):
return StreamingHttpResponse(stream_response_generator())
def stream_response_generator():
for x in range(1,11):
yield "%s\n" % x # Returns a chunk of the response to the browser
time.sleep(1)
Note sur Apache
J'ai testé le dessus de Apache 2.2 avec Ubuntu 13.04. L'apache module mod_deflate qui a été activée par défaut dans la configuration que je le test de la mémoire tampon le contenu que vous essayez de flux jusqu'à ce qu'il atteint une certaine taille de bloc, alors il sera de gzip le contenu et l'envoyer au navigateur. Cela permettra d'éviter l'exemple ci-dessus, de fonctionner comme souhaité. Une manière d'éviter cela est de désactiver le mod_deflate en insérant la ligne suivante dans votre configuration d'apache:
SetEnvIf Request_URI ^/mysite no-gzip=1
Cette question est examinée plus dans la Façon de désactiver mod_deflate dans apache2? question.