[sisyphus] pyvfs package
Peter V. Saveliev
peet на altlinux.ru
Пт Окт 5 18:56:47 MSK 2012
…
Отправил в Сизиф (когда-нибудь, наверное, доползёт) пакет
python-module-pyvfs.
В двух словах, вдруг кому будет интересно. Первичной задачей было
представление объектов петона в виде директорий и файлов на виртуальной
ФС в целях мониторинга, отладки и т.п.
Быстрый старт: допустимы вы имеете скрипт my_script.py и хотите понять,
что происходит внутри него с объектами класса MyClass. Для этого
достаточно следующего:
from pyvfs.objectfs import export
…
@export
class MyClass(object):
…
После этого достаточно запустить скрипт. Пока он будет работать, объекты
класса MyClass будут доступны на виртуальной файловой системе.
Как выбрать ФС и как её подключить: для простоты интеграции с
существующими сервисами (разрабатывается она для отладки большого
сурового демона на петоне) библиотека ориентируется на переменные окружения.
PYVFS_PROTO — может быть 9p или fuse.
Если протокол выбран 9p, в системе необходимо иметь python-module-py9p.
ФС будет экспортирована по умолчанию по адресу 127.0.0.1:10001,
подключить её можно с помощью команды
# mount -t 9p -o ro,port=10001 127.0.0.1 /mnt
Если протокол выбран fuse, файловая система автоматически будет *уже*
смонтирована в директорию, указанную в переменной окружения
PYVFS_MOUNTPOINT. Для работы протокола fuse нужно иметь в системе
python-module-fuse. По окончанию работы не забудьте отмонтировать ФС
(пока что библиотека этого автоматически не делает).
…
Плюсы:
* Может использоваться для мониторинга структур без использования
отладчиков, без установки брейкпойнтов и так далее. Библиотека не служит
и не может служить заменой отладчикам, однако часто нужно всего лишь
получить содержимое внутренних структур в рантайме.
* Простота интеграции: всё, что надо, это добавить в любой код две
строчки, одну на импорт, вторую для декорирования нужного класса. Если
необходимо интегрировать с сервисом (у меня так mdns-сервер работает,
например, показывая свою базу как ФС), то переменные окружения можно
экспортировать в init-скрипте или где там теперь это модно делать, либо
использовать значения по умолчанию.
* В отличие от разных RPC API, позволяет работать простыми старыми
средствами шелла.
По моему опыту, оказалось очень полезной, даже несмотря на стадию пре-альфа.
Минусы:
* Некоторые заморочные случаи петонических структур, криво отображённые
на файловую структуру, могут обрушить модуль VFS. А если ФС
примонтирована, скажем, через системный mount, то дело может дойти до
оопса. В продакшне я бы пока не рекомендовал использовать. Ну, только
если до конца понимаете, что может случиться.
* Пока что работает только на read-only. Но read-write режим
запланирован на ближайшее будущее. В первом приближении он позволит
менять значения имеющихся атрибутов (да хоть из shell-скриптов), во
втором — создавать объекты.
* Библиотека на довольно ранней стадии развития, это тоже вряд ли можно
занести в плюсы.
…
Более подробно с переменными окружения и примерами использования можно
ознакомиться здесь: http://peet.spb.ru/pyvfs/
…
Ещё более подробно можно посмотреть в коде на гитхабе
https://github.com/svinota/pyvfs или на git.alt.
…
Ya' welcome. Если кто будет использовать — буду рад фидбэку.
--
Peter V. Saveliev
Подробная информация о списке рассылки Sisyphus