Недорогой способ проверить, содержит ли файл архетипов полезную нагрузку (BLOB)

#blob #plone #archetypes

#blob #plone #архетипы

Вопрос:

Есть ли способ быстро проверить, содержит ли поле файла Archetypes полезную нагрузку или нет, без фактической загрузки содержимого файла в память?

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

Plone 4.1.

Ответ №1:

В ATFiles есть метод size() для проверки размера файла. Кажется, что размер нигде не сохраняется, поэтому, возможно, добавление столбца в каталог подойдет вам.

Комментарии:

1. Вы имеете в виду, что вызов size() прочитает большой двоичный объект и вызовет его len()?

2. Я считаю, что вы можете выполнить get_size проверку на уровне поля — посмотрите на plone.app.blob.field

3. @MikkoOhtamaa он должен откуда-то знать размер, вызывать его длину или, если вы используете большие двоичные объекты, запрашивать файловую систему. Если size() где-то кэшируется и, следовательно, размер не проверяется каждый раз, вам следует выяснить, где хранится, если нет, просто добавьте столбец в portal_catalog, и таким образом вы также сможете запросить их.

4. Mikko может быть, вас заинтересует: dev.plone.org/ticket/12041 . Пока кажется, что он проверяет во время выполнения.