У меня есть django API для потоковой передачи ответа с использованием сообщений protobuff
def retrieve(self, request, event_date=None, notification=None):
...
return StreamingHttpResponse(self.generator(leaseEvents, 2000), content_type='application/protobuf')
def generator(self, qs, BATCH_SIZE=2000):
pages = Paginator(qs.order_by("event_date").values_list('reference', 'event_date', 'event_msg'), BATCH_SIZE)
for i in pages.page_range:
p = pages.get_page(i)
for event in p:
# filling protobuf object
yield lease_event.SerializeToString()
Использование Postman для запроса API работает хорошо.
Моя цель - получить результат с помощью python модуль запросов, но я получаю только пустой ответ.
with requests.get(url, stream=True) as r:
print(r)
print(r.headers.get('content-type'))
print(r.headers)
print(r.content)
print(len(r.content))
print(r.elapsed.total_seconds())
for line in r.iter_lines():
print("hi")
if line: # filter out keep-alive new lines
print(line)
Вот результат
<Response [200]>
application/protobuf
{'Date': 'Tue, 14 Apr 2020 09:05:45 GMT', 'Server': 'WSGIServer/0.2 CPython/3.8.1', 'Content-Type': 'application/protobuf', 'Vary': 'Accept, Cookie', 'Allow': 'GET, HEAD, OPTIONS', 'X-Frame-Options': 'SAMEORIG
IN', 'Content-Length': '0'}
b''
0
0.675784
Я думаю, что запросы предполагают, что content-length
равен 0, даже если я Я использую StreamingHttpResponse
, который не обеспечивает content-length
.
Я что-то упустил?
Заранее спасибо:)