PyVFS: различия между версиями

Материал из ALT Linux Wiki
(Новая страница: «=== Быстрый старт === Допустим, вы имеете скрипт my_script.py и хотите понять, что происходит внутр...»)
 
м (micro intro+some typo fixed)
Строка 1: Строка 1:
Пакет '''python-module-pyvfs''' позволяет иметь представление объектов питона в виде директорий и файлов на виртуальной ФС в целях мониторинга, отладки и т.п.
=== Быстрый старт ===
=== Быстрый старт ===


Строка 16: Строка 18:
=== Как выбрать ФС и как её подключить ===
=== Как выбрать ФС и как её подключить ===


Для простоты интеграции с существующими сервисами (разрабатывается она для отладки большого сурового демона на петоне) библиотека ориентируется на переменные окружения.
Для простоты интеграции с существующими сервисами (разрабатывается она для отладки большого сурового демона на питоне) библиотека ориентируется на переменные окружения.


* PYVFS_PROTO — может быть 9p (по умолчанию) или fuse.
* PYVFS_PROTO — может быть 9p (по умолчанию) или fuse.
Строка 39: Строка 41:
=== Минусы ===
=== Минусы ===


* Некоторые заморочные случаи петонических структур, криво отображённые на файловую структуру, могут обрушить модуль VFS. А если ФС примонтирована, скажем, через системный mount, то дело может дойти до оопса. На рабочие сервера имеет смысл ставить только если до конца понимаете, что может случиться.
* Некоторые заморочные случаи питонических структур, криво отображённые на файловую структуру, могут обрушить модуль VFS. А если ФС примонтирована, скажем, через системный mount, то дело может дойти до оопса. На рабочие сервера имеет смысл ставить только если до конца понимаете, что может случиться.
* Пока что работает только на read-only. Но read-write режим запланирован на ближайшее будущее. В первом приближении он позволит менять значения имеющихся атрибутов (да хоть из shell-скриптов), во втором — создавать объекты.
* Пока что работает только на read-only. Но read-write режим запланирован на ближайшее будущее. В первом приближении он позволит менять значения имеющихся атрибутов (да хоть из shell-скриптов), во втором — создавать объекты.
* Библиотека на довольно ранней стадии развития, это тоже вряд ли можно занести в плюсы.
* Библиотека на довольно ранней стадии развития, это тоже вряд ли можно занести в плюсы.

Версия от 20:21, 5 октября 2012

Пакет python-module-pyvfs позволяет иметь представление объектов питона в виде директорий и файлов на виртуальной ФС в целях мониторинга, отладки и т.п.

Быстрый старт

Допустим, вы имеете скрипт my_script.py и хотите понять, что происходит внутри него с объектами класса MyClass. Для этого нужно следующее:


from pyvfs.objectfs import export

@export
class MyClass(object):
    pass

После этого достаточно запустить скрипт. Пока он будет работать, объекты класса MyClass будут доступны на виртуальной файловой системе.

Как выбрать ФС и как её подключить

Для простоты интеграции с существующими сервисами (разрабатывается она для отладки большого сурового демона на питоне) библиотека ориентируется на переменные окружения.

  • PYVFS_PROTO — может быть 9p (по умолчанию) или fuse.
  • PYVFS_PORT — TCP-порт (только для 9p, по умолчанию 10001)
  • PYVFS_ADDRESS — IPv4-адрес, на котором слушать запросы (только для 9p, по умолчанию 127.0.0.1)
  • PYVFS_MOUNTPOINT — директория, куда монтировать ФС (только для fuse, по умолчанию ./mnt)
  • PYVFS_DEBUG — включать ли отладочный вывод сервера ФС на stderr (по умолчанию False)
  • PYVFS_LOG — добавлять ли файл /log и корневой обработчик журналирования (по умолчанию False)

Если протокол выбран 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. По окончанию работы не забудьте отмонтировать ФС (пока что библиотека этого автоматически не делает).

Плюсы

  • Может использоваться для мониторинга структур без использования отладчиков, без установки брейкпойнтов и так далее. Библиотека не служит и не может служить заменой отладчикам, однако часто нужно всего лишь получить содержимое внутренних структур в рантайме.
  • Простота интеграции: всё, что надо, это добавить в любой код две строчки, одну на импорт, вторую для декорирования нужного класса. Если необходимо интегрировать с сервисом, то переменные окружения можно экспортировать в init-скрипте или где там теперь это модно делать, либо использовать значения по умолчанию.
  • В отличие от разных RPC API, позволяет работать простыми старыми средствами шелла.

Минусы

  • Некоторые заморочные случаи питонических структур, криво отображённые на файловую структуру, могут обрушить модуль VFS. А если ФС примонтирована, скажем, через системный mount, то дело может дойти до оопса. На рабочие сервера имеет смысл ставить только если до конца понимаете, что может случиться.
  • Пока что работает только на read-only. Но read-write режим запланирован на ближайшее будущее. В первом приближении он позволит менять значения имеющихся атрибутов (да хоть из shell-скриптов), во втором — создавать объекты.
  • Библиотека на довольно ранней стадии развития, это тоже вряд ли можно занести в плюсы.

Смотри также

Более подробно с переменными окружения и примерами использования можно ознакомиться здесь: http://peet.spb.ru/pyvfs/ Ещё более подробно можно посмотреть в коде на гитхабе https://github.com/svinota/pyvfs или на git.alt.