Я использую 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 (возможно, каким-то потоком).
Мне не удалось найти решение этой, казалось бы, распространенной проблемы. Как это будет достигнуто?
Спасибо!