Django error Broken pipe from ('127.0.0.1', 1628) when exporting to pdf using Xhtml2pdf

У меня есть django представление, которое экспортирует записи, используя библиотеку xhtml2pdf, однако я заметил, что представление обновляется несколько раз, пока моя функция pdf обрабатывает запрос. Кроме того, при таком поведении представление перезагружается несколько раз, пока файл не будет готов к экспорту. Это потенциально опасно, поскольку представление запрашивает данные в большом количестве для загрузки в pdf. Ошибка, которую я получаю из терминала, выглядит так:

Сломанная труба от ('127.0.0.1', 1314)

Я где-то читал, что это может быть результатом закрытия и открытия соединения браузером, но я тестировал на другом представлении, загружая страницу и задерживая ответ, но это не произошло, как описано выше.

Это мой views.py:

@login_required(login_url='/')
@user_passes_test(validate_all_view())
def export_assets(request):
    if request.method == 'POST':
        checkbox_list = request.POST.getlist('id[]')
        if not len(checkbox_list) > 0:
            messages.error(request, "You must select at least one row to export.")
            return redirect('view_active_assets')
        queryset = Assets.objects.filter(id__in=checkbox_list)[:10000]
        if 'excel' in request.POST:
            return process_excel_export(queryset)
        if 'pdf' in request.POST:
            return process_pdf_export(request, queryset)
     else:
        return redirect('view_active_assets')

функция рендеринга:

def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html  = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("UTF-8")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), content_type='application/pdf')
    return None

Обработать функцию pdf:

def process_pdf_export(request, queryset):
    domain = settings.DOMAIN 
    context =  {'queryset': queryset, 'asset_count': queryset.count()}
    pdf = render_to_pdf('dashboard/pdf_templates/assets_pdf.html', context)
    response = HttpResponse(pdf, content_type='application/pdf')
    filename = "Assets Export.pdf"
    content = "inline; filename=%s" % (filename)
    download = request.GET.get("download")
    if download:
       content = "attachment; filename='%s'" % (filename)
    response['Content-Disposition'] = content
    return response
Вернуться на верх