Django 处理大文件时管道断裂错误

Django broken pipe error when handling large file

提问人:SUIN ROH 提问时间:10/21/2023 最后编辑:SUIN ROH 更新时间:10/21/2023 访问量:22

问:

使用 Django 框架开发的服务器托管在本地环境中,在处理大文件的过程中发生管道断裂错误。

目前的问题是下面的代码,即通过单独的视图将 DICOM 文件更改为 png 扩展名来处理 DICOM 文件。正常情况下没有问题,但在处理大约 15MB 的文件时会出现断管错误。

# javascript code for request file data in html template

function loadImages(images, fileType, index) {
        event.preventDefault();

        if (index < images.length) {
          var image = images[index];
          var fileName = image.image_url.split('/').pop();
          var imageData = {
            fileName: fileName,
          };
      
          imageInfoArray.push(imageData);

          var img = new Image();
          img.onload = function() {
            var filePreviewHTML = `
              <li class="add-image-${index}">
                <a href="javascript:void(0)" class="img-wrap" data-id="${index}">
                  <img src="${(fileName.endsWith('.DCM')) ? '/dicom/' + fileName : image.image_url}" alt="ask-file-img"/>
                  <button class="remove-file" onclick="disableImage('${image.image_url}')"><i class="material-icons">close</i></button>
                </a>
                <p class="file-name">${fileName}</p>
              </li>
            `;

            var filePreview = $('.file-preview[data-file="' + fileType + '"]');
            filePreview.append(filePreviewHTML);

            loadImages(images, fileType, index + 1);
          }

          img.src = (fileName.endsWith('.DCM')) ? '/dicom/' + fileName : image.image_url;
        }
// view code for handling DICOM file

def show_dicom(request, file_path):
    file_path = os.path.join(settings.MEDIA_ROOT, "xray_images", file_path)
    dicom = pydicom.dcmread(file_path)

    image_array = apply_voi_lut(dicom.pixel_array, dicom)
    image_array_2d = image_array[0] if len(image_array.shape) > 2 else image_array

    norm = Normalize(vmin=image_array_2d.min(), vmax=image_array_2d.max())
    image_array_2d = norm(image_array_2d)

    plt.imshow(image_array_2d, cmap=plt.cm.bone)
    plt.axis('off')

    buffer = BytesIO()
    plt.savefig(buffer, format='png', bbox_inches='tight', pad_inches=0)
    buffer.seek(0)
    plt.close()

    return HttpResponse(buffer.getvalue(), content_type='image/png')

在处理大约 15MB 大的文件时,会出现以下错误。

[20/Oct/2023 14:10:58,643] - Broken pipe from ('127.0.0.1', 50065)

有人可以帮我吗?

我以为问题发生了,因为文件太大而无法发送。 所以我试图调整文件大小。

  1. 调整文件大小
  2. 压缩文件
JavaScript Django 文件

评论


答: 暂无答案