меня тут вопрос возник - а что, если пользователи будут загружать большое количество одинаковых файлов, не рационально ли будет считать контрольные суммы, и, в случае, если контрольная сумма уже имеется, то вместо загрузки файла в хранилище - просто возвращать ссылку на имеющийся.
Собственно вопрос - как лучше всего реализовать подобное без использования сторонних библиотек. Есть ли в стандартном наборе Python 3.9 что-то для реализации подобного? Как оно считает контрольную сумму у больших файлов ?
Мне именно подсчитать контрольную сумму нужно
hashlib
def md5sum(filename): hash = md5() with open(filename, "rb") as f: for chunk in iter(lambda: f.read(128 * hash.block_size), b""): hash.update(chunk) return hash.hexdigest() Так ведь подходит?
норм, но блок можно взять и побольше.
у сотни пользователей может быть одинаковый файл, они его будут грузить, но с разными именами (имя, описание итд + ссылка на файл хранятся в БД). Например, один загрузит с названием ххх.docx и заголовком "пример договора на ... ", а второй загрузить тот же xxx.docx с заголовком "образец договора на ...". Зачем хранить 2 файла, когда можно хранить 2 записи в БД, но с одной общей ссылкой на файл :)
охуенный план отстрелить себе яйца
насколько вообще целесообразно заморачиваться такими вещами в век S3?
потому что ты путаешь свой сраный локалхост и поиск дубликатов файлов с решением этой задачи в рамках сервиса.
Я старпёр :( оптимизация и всё такое сразу закладывается. В приоритете качество и скорость работы, вместо скорости разработки. Да и денег сэкономить на серверах после запуска MVP
Так его функция делает тоже самое. Вроде.
Откуда у них одинаковый файл)?
1. в условиях задачи не обозначены размеры файлов. 2. не обозначены требования по памяти для сервиса. 3. не обозначены предполагаемое количество одновременных операций.
нет, твоя функция читает весь файл в память и потом уже вычисляет его хеш.
лучше делать быстрее везде где только можно
что ты подразумеваешь под "нативно считается"?
Hashlib, не сьорд-пати что-то
Обсуждают сегодня