Загрузка и обработка файлов на Django приводит к ошибке 500 при развертывании на Heroku

Веб-сайт: https://atw.herokuapp.com

Он позволяет пользователям вводить файлы Microsoft Word, и как только Django получает файлы, он их обрабатывает.

Я использую React для построения своего фронтенда, и код, отвечающий за выполнение POST-запроса после того, как пользователь закинул файлы, выглядит следующим образом:

const onDrop = useCallback((acceptedFiles) => {
    // Do something
    const csrftoken = Cookies.get("csrftoken");
    var form_data = new FormData();
    for (var i = 0; i < acceptedFiles.length; i++) {
      form_data.append("atw", acceptedFiles[i]);
    }

    axios
      .post("https://atw.herokuapp.com/upload/", form_data, {
        header: {
          "content-type": "undefined",
          "X-CSRFToken": csrftoken,
        },
      })
      .then((res) => {
        window.open("https://atw.herokuapp.com/download/");
      })
      .catch((e) => console.log(e));
  }, []);

У меня есть представление Django, которое обрабатывает загруженные файлы:

class Upload(APIView):
    """ Process Microsoft Word files received through POST requests
    """

    def post(self, request):
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            STATE['status'] = 'processing'
            for f in request.FILES.getlist('atw'):
                newfile = Document(docfile=f)
                newfile.save()
            
            output_filename = "OUT-ATW.docx"
            processor = FilesProcessor(output_filename)
            processor.process()
            STATE['status'] = 'done'
            return HttpResponse("Successfully processed files!")
        else:
            form = DocumentForm()
        return render(request, 'myapp/index.html')

Я использую django-cors-headers для обработки CORS-заголовков и всего такого, и внес herokuapp в белый список в моем settings.py:

ALLOWED_HOSTS = ['.herokuapp.com', '127.0.0.1']

Проблема

Локально он работает нормально, но после развертывания проекта на Heroku я не могу успешно загрузить файлы. Вы можете попробовать воспользоваться ссылкой, приведенной выше.

Когда я закидываю файлы в dropZone, я получаю POST https://atw.herokuapp.com/upload/ 500 (Internal Server Error) в консоли Chrome.

Есть ли что-то, что я упускаю? Я не против использования эфемерной файловой системы Heroku вместо AWS S3, потому что после обработки этих файлов я собираюсь удалить их в любом случае

Спасибо.

Какой журнал выводится на консоль при выборе метода POST?

Вернуться на верх