gpt4 book ai didi

python - 使用 django-import-export 流式传输响应

转载 作者:太空宇宙 更新时间:2023-11-03 11:02:42 24 4
gpt4 key购买 nike

我一直在使用 django-import-export 一段时间来为用户提供数据的 CSV/XLS 导出功能,但随着数据集变大,我遇到了服务器超时问题。

我知道可以使用 StreamingHttpResponse 但据我所知,这是通过编写您自己的 CSV 编写器函数来输出您的数据来完成的,至少在最初,我并不觉得我可以用我目前的方法做的事情。

当您使用 django-import-export 模型资源生成文件时,是否可以流式传输响应?

这是我目前实现的那种代码,带有标准的HttpResponse

class ExportConsolePlacesView(ClientPlacesView, View):
"""
Export view for all places, either incomplete or complete.
"""
model = Place
http_method_names = ['get', ]

def get(self, request, *args, **kwargs):
self.object_list = self.get_queryset()
console_name = self.console.name.replace(' ', '_')

if kwargs['query'] == u'complete':
dataset = PlaceResource().export(
Place.objects.complete_entrants_for_console(self.console)
)
filename = '{}_complete_entrants'.format(console_name).lower()

elif kwargs['query'] == u'incomplete':
dataset = PlaceResource().export(
Place.objects.incomplete_entrants_for_console(self.console)
)
filename = '{}_incomplete_entrants'.format(console_name).lower()

export_type = kwargs['format']
_dataset_methods = {
'csv': dataset.csv,
'xls': dataset.xls
}
response = HttpResponse(
_dataset_methods[export_type], content_type=export_type
)
response[
'Content-Disposition'] = 'attachment; filename={fn}.{ext}'.format(
fn=filename,
ext=export_type
)

return response

最佳答案

我向 django-import-export 的开发人员询问了这个问题,他认为由于该应用程序使用 tablib,因此无法流式传输响应tablib 的行为方式。

I think it would not be possible to create stream of export from tablib which django-import-export uses.

https://github.com/django-import-export/django-import-export/issues/206

关于python - 使用 django-import-export 流式传输响应,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28383358/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com