Python 如何立即开始下载(但能否';t块数据)?

Python 如何立即开始下载(但能否';t块数据)?,python,django,Python,Django,我有这样的看法: def download(request): response = StreamingHttpResponse([save_virtual_workbook(make_xl_workbook())], content_type="application/vnd.ms-excel") response[u'Content-Disposition'] = u'attachment; filename="%s"' % filename return respo

我有这样的看法:

def download(request):
    response = StreamingHttpResponse([save_virtual_workbook(make_xl_workbook())], content_type="application/vnd.ms-excel")
    response[u'Content-Disposition'] = u'attachment; filename="%s"' % filename
    return response
但它会等到make_xl_工作簿运行后才提示用户下载

我读到我无法将make_xl_工作簿返回的数据分块,因为xlsx文件是压缩的。因此,我希望立即开始下载,然后运行该函数,然后在该函数运行后将完整数据注入响应

我也试过了,但似乎没用。在下载开始之前,它仍然运行make_xl_工作簿的完整功能

def download(request):
    def save_xl():
        yield save_virtual_workbook(make_xl_workbook())
    response = StreamingHttpResponse(save_xl(), content_type="application/vnd.ms-excel")
    response[u'Content-Disposition'] = u'attachment; filename="%s"' % filename
    return response
更新:也尝试了这个,得到了相同的行为,没有改变

def download(request):
    def save_xl():
        yield ''
        yield save_virtual_workbook(make_xl_workbook())
    response = StreamingHttpResponse(save_xl(), content_type="application/vnd.ms-excel")
    response[u'Content-Disposition'] = u'attachment; filename="%s"' % filename
    return response

我认为在
yield save_virtual_工作簿(…)
之前一次生成(一个空字符串?)就足够了,如果你必须提前创建文件,而这是主要的瓶颈,那么你真的需要先下载它来节省那么多吗?@Jiaaro,谢谢,但只是尝试了一下,没有改进。