Рекомендовать способ и максимальный размер байта для запросов в Django-приложении с большим объемом данных

Я работаю над приложением, которое обрабатывает наборы данных разного размера. Для POST-запросов я проверяю вложенный .csv-файл на размер байта, и если он превышает 10мб, я возвращаю ответ BAD_REQUEST:

MAX_FILESIZE_BYTES = 10485760 # 10mb

csvFile = request.data["file"]
if(csvFile.size > MAX_FILESIZE_BYTES):
    raise Exception("File size over "+str(MAX_FILESIZE_BYTES))

except Exception as e:
    return Response("Uploaded File bigger than maximum filesize", status=BAD_REQUEST, exception=True)       

Является ли это рекомендуемым способом обработки слишком больших файлов? И является ли 10мб разумным размером, или мое приложение может обрабатывать гораздо большие размеры? Я использую rest_framework, атомарные транзакции с postgresql и не ожидаю, что у меня будет более 50 пользователей одновременно.

Является ли это рекомендуемым способом обработки слишком больших файлов?

Ну, это кажется немного странным, что вы поднимаете исключение только для того, чтобы поймать его.

MAX_FILESIZE_BYTES = 10 * 1024 * 1024  # 10 MiB

if request.data["file"].size > MAX_FILESIZE_BYTES:
    return Response(
        "Uploaded file bigger than maximum filesize", 
        status=BAD_REQUEST,
        exception=True,
    )

проще.

И является ли 10мб разумным размером, или мое приложение может работать с гораздо большими размерами?

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

Кроме того, рассмотрим случай, когда пользователю действительно нужно загрузить файл размером, скажем, 10,1 мегабайт - он просто пожалуется, что ваше приложение не позволяет ему сделать это.

Проще говоря: Вам понадобится либо ноль единиц, либо одна единица, либо произвольное количество единиц. Программисты и архитекторы игнорируют это на свой страх и риск. Произвольные фиксированные пределы - это запах кода.

- Правило нулевой бесконечности

Конечно, если ваше приложение позволяет просто любому начать загружать гигабайт данных, вы, возможно, захотите установить очень высокий произвольный предел "безопасности", но если это, например, какой-то внутренний инструмент, я бы просто избавился от ограничения вообще. Если ваш пользователь попытается загрузить достаточно большой файл, "довольно тяжелая" операция, скорее всего, не удастся, и он будет жаловаться на это, а не на то, что ваше приложение не дает ему сделать свою работу.

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