Il ya un an, j'ai utilisé StreamingHttpResponse de Django pour diffuser un fichier texte et Chrome a immédiatement affiché chaque morceau de texte qu'il a reçu. Désormais, avec le même code, Chrome affiche uniquement le texte lorsqu'il charge complètement le fichier texte, ce qui risque d'entraîner un dépassement de délai du serveur. Cela n'arrive pas avec Firefox.Chrome ne diffuse pas de contenu à partir StreamingHttpResponse de Django
J'ai créé un test simple:
# views.py
import time
from django.views import generic
class TestEditView(generic.TemplateView):
def generator(self):
for _ in range(15):
time.sleep(1)
yield 'THIS IS {}\n'.format(_)
print('LOG: THIS IS {}\n'.format(_))
def get(self, request, *args, **kwargs):
return StreamingHttpResponse(self.generator(),
content_type="text/plain; charset=utf-8")
Si j'accéder à ce point de vue dans Firefox, ce navigateur va afficher «C'EST .... chaque seconde pendant 15 secondes. Mais dans Chrome, le navigateur attendra 15 secondes, puis affichera tous les 'THIS IS ...', même si le serveur de développement enregistre 'LOG: THIS IS ...' une fois par seconde.
Je me demande s'il y a une subtilité dans ce problème que j'ai raté. Je vous remercie.
Python: 3.6.2.
Django: 1.10.5
Je pense que vous devez définir l'encodage de transfert sur '' chunked'' sinon le navigateur peut attendre ou non le fichier complet. – allo
Je ne suis pas sûr de savoir quelle est la question ici. Il semble que vous ayez un rapport de bug possible pour les développeurs de chrome? –