Python Flask + nginx fcgi — выводить большой ответ?

Я использую Python Flask + nginx с FCGI.

На некоторые запросы мне приходится выводить большие ответы. Обычно эти ответы извлекаются из сокета. В настоящее время я отвечаю так:

response = []
while True:
    recv = s.recv(1024)
    if not recv: break
    response.append(recv)
s.close()
response = ''.join(response)

return flask.make_response(response, 200, {
                                           'Content-type': 'binary/octet-stream',
                                           'Content-length': len(response),
                                           'Content-transfer-encoding': 'binary',
                                           })

Проблема в том, что мне на самом деле не нужны данные.У меня также есть способ определить точную длину ответа, который нужно получить из сокета. Поэтому мне нужен хороший способ отправить заголовки HTTP, а затем начать вывод напрямую из сокета, вместо того, чтобы собирать его в памяти и затем передавать в nginx (возможно, каким-то потоком).

Мне не удалось найти решение этой, казалось бы, распространенной проблемы. Как это будет достигнуто?

Спасибо!

6
задан ddinchev 18 May 2012 в 10:00
поделиться