【发布时间】:2017-11-08 16:32:18
【问题描述】:
我正在尝试在返回 StreamingHttpResponse 时处理错误:
在用作straeming_content 的迭代器内手动引发的异常未被捕获。
代码如下:
def reportgen_iterator(request, object_id):
output_format = request.GET.get('output', 'pdf')
debug_mode = request.GET.get('debug', False)
response_data = {
'progress': 'Retrieving data...',
}
# code....
yield json.dumps(response_data)
# code ...
raise Exception('bla bla') # manually raised exception
# other code ......
yield json.dumps(response_data)
class StreamingView(View):
def get(self, request, object_id):
"""
"""
stream = reportgen_iterator(request, object_id)
try:
response = StreamingHttpResponse(
streaming_content=stream, status=200,
content_type='application/octet-stream'
)
response['Cache-Control'] = 'no-cache'
return response
except Exception as e:
# exception not catched
return HttpResponseServerError(e.message)
有关如何正确处理此问题的任何帮助? except 子句永远不会到达。
谢谢
【问题讨论】:
标签: python django iterator django-views chunked