Skip to content

Conversation

@t33nsy
Copy link
Collaborator

@t33nsy t33nsy commented May 10, 2025

No description provided.

app/mongo_odm.py Outdated
meta.save()

def check_storage_limit(self, new_file_size):
max_size = int(Config.c.constants.storage_max_size_mbytes)*1024*1024
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Поскольку вы вынесли логику в DBManager - давайте лимит запишем в его поле (тогда не нужно будет каждый раз преобразовывать данные из конфига)

app/mongo_odm.py Outdated
except:
if(isinstance(file, str)):
size = len(file)
self.check_storage_limit(size)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

в случае, если БД переполнена - загрузка (и тренировка) должна быть прервана - иначе сейчас просто пишется сообщение в лог и логика идет дальше

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

кажется, в тестовом конфиге это тоже пригодится - как минимум, для selenium-теста, проверяющего страницу capacity

@t33nsy t33nsy requested a review from HadronCollider July 6, 2025 10:44
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Добавьте ссылку на эту страницу в /admin

app/mongo_odm.py Outdated

class DBManager:
def __new__(cls):
def __new__(cls, max_size=20000): # max_size only on first creation, in MB
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Максимальный размер для БД укажите в конфиге - раздел [constants] для этого подойдет

app/api/files.py Outdated
if not DBManager().check_storage_limit(request.content_length * 2.5):
return {
'message': "Not enough place in database to store file"
}, 404
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Измените код на 413 (он тут более логичен - в 146 строчке тоже обновите) и добавьте обработку этой ошибки на клиенте - чтобы пользователь не гадал что и как сломалось (для случая переполнения БД добавьте сообщение, что необходимо обратиться по почте - она есть в конфиге в разделе bugreport)

meta = StorageMeta(used_size=0).save()
return meta

def get_used_storage_size(self):
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

добавьте метод для актуализации данных (вдруг где-то логика дала сбой и насчитала нам что-то, или вручную из бд были удалены файлы) - ему нужно будет пройтись по всем документам и посчитать их общий вес

  • на странице capacity сделайте кнопку для такого обновления данных, чтобы по запросу пересчитывать размер и выводить актуальный

@HadronCollider HadronCollider merged commit 4a09c8c into master Jul 25, 2025
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Контроль/ограничение занимаемого пространства

3 participants