Потоковый HTTP-ответ, сброс в браузер - PullRequest
8 голосов
/ 29 мая 2010

У меня есть вид, подобный следующему:

from django.views.decorators.http import condition

def stream():
    for i in range(0, 40):
        yield " " * 1024
        yield "%d" % i
        time.sleep(1)

@condition(etag_func=None):
def view(request):
    return HttpResponse(stream(), mimetype='text/html')

Однако, это определенно не похоже на потоковую передачу вообще. Все данные сбрасываются сразу, в конце примерно через 40 секунд. Как я могу заставить его правильно промыть?

1 Ответ

3 голосов
/ 13 июня 2010

Чтобы обеспечить потоковую передачу http, ваше промежуточное ПО, контейнер WSGI и веб-сервер (а также обратный прокси-сервер / балансировщик нагрузки, если вы используете развертывание в стиле nginx + apache2) должны поддерживать его. Отключите промежуточное программное обеспечение и удалите некоторые слои, пока он не заработает (все, что выполняет кэширование или устанавливает etags), затем добавьте их обратно. Я не знаю, какой у вас стек, но IIRC apache2 + mod_python в порядке с потоковой передачей, хотя это не рекомендуемый способ обслуживания Django.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...