python django exporing excel服务器关闭

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)

我的网站有一个以excel格式导出日报的功能,根据用户的不同,日报可能会有所不同。由于某种原因,我不能考虑ReDIS或MyCask。对于每个用户,数据库中的行数大约为2-5行。当用户调用导出到excel功能时,需要5-10分钟才能导出,直到该网站的所有资源(ram、cpu)都用于制作excel和结果网站5分钟,5分钟后一切正常。我还将查询结果分成小块,以解决RAM问题,它解决了我50%的问题。CPU和RAM优化还有其他解决方案吗

示例代码

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它可以工作,接受并投票:-)。