python django exporing excel服务器关闭
我的网站有一个以excel格式导出日报的功能,根据用户的不同,日报可能会有所不同。由于某种原因,我不能考虑ReDIS或MyCask。对于每个用户,数据库中的行数大约为2-5行。当用户调用导出到excel功能时,需要5-10分钟才能导出,直到该网站的所有资源(ram、cpu)都用于制作excel和结果网站5分钟,5分钟后一切正常。我还将查询结果分成小块,以解决RAM问题,它解决了我50%的问题。CPU和RAM优化还有其他解决方案吗 示例代码python django exporing excel服务器关闭,python,django,optimization,Python,Django,Optimization,我的网站有一个以excel格式导出日报的功能,根据用户的不同,日报可能会有所不同。由于某种原因,我不能考虑ReDIS或MyCask。对于每个用户,数据库中的行数大约为2-5行。当用户调用导出到excel功能时,需要5-10分钟才能导出,直到该网站的所有资源(ram、cpu)都用于制作excel和结果网站5分钟,5分钟后一切正常。我还将查询结果分成小块,以解决RAM问题,它解决了我50%的问题。CPU和RAM优化还有其他解决方案吗 示例代码 def import_to_excel(request)
def import_to_excel(request):
order_list = Name.objects.all()
book = xlwt.Workbook(encoding='utf8')
default_style = xlwt.Style.default_style
style = default_style
fname = 'order_data'
sheet = book.add_sheet(fname)
row = -1
for order in order_list:
row+=1
sheet.write(row, 1,order.first_name, style=style)
sheet.write(row, 2,order.last_name, style=style)
response = HttpResponse(mimetype='application/vnd.ms-excel')
response['Content-Disposition'] = 'attachment; filename=order_data_pull.xls'
book.save(response)
return response
- 不要使用
HttpResponse
- 您还可以使用异步方式处理请求
因此,您的系统将以这种方式变得更加用户友好。与RAM或CPU优化无关(但可能会显示一些差异)。您可以尝试使用,也可以使用异步方式处理您的请求。流式传输需要很长时间才能生成的文件可以避免负载平衡器断开连接,其次,异步方式将在后台处理您的请求,并且您的服务器可以自由地处理另一个请求,使其对用户友好。谢谢@KapilSachdev它可以工作,接受并投票:-)。