PyVFS: различия между версиями
(Новая страница: «=== Быстрый старт === Допустим, вы имеете скрипт my_script.py и хотите понять, что происходит внутр...») |
Tora-bora (обсуждение | вклад) м (micro intro+some typo fixed) |
||
Строка 1: | Строка 1: | ||
Пакет '''python-module-pyvfs''' позволяет иметь представление объектов питона в виде директорий и файлов на виртуальной ФС в целях мониторинга, отладки и т.п. | |||
=== Быстрый старт === | === Быстрый старт === | ||
Строка 16: | Строка 18: | ||
=== Как выбрать ФС и как её подключить === | === Как выбрать ФС и как её подключить === | ||
Для простоты интеграции с существующими сервисами (разрабатывается она для отладки большого сурового демона на | Для простоты интеграции с существующими сервисами (разрабатывается она для отладки большого сурового демона на питоне) библиотека ориентируется на переменные окружения. | ||
* PYVFS_PROTO — может быть 9p (по умолчанию) или fuse. | * PYVFS_PROTO — может быть 9p (по умолчанию) или fuse. | ||
Строка 39: | Строка 41: | ||
=== Минусы === | === Минусы === | ||
* Некоторые заморочные случаи | * Некоторые заморочные случаи питонических структур, криво отображённые на файловую структуру, могут обрушить модуль VFS. А если ФС примонтирована, скажем, через системный mount, то дело может дойти до оопса. На рабочие сервера имеет смысл ставить только если до конца понимаете, что может случиться. | ||
* Пока что работает только на read-only. Но read-write режим запланирован на ближайшее будущее. В первом приближении он позволит менять значения имеющихся атрибутов (да хоть из shell-скриптов), во втором — создавать объекты. | * Пока что работает только на read-only. Но read-write режим запланирован на ближайшее будущее. В первом приближении он позволит менять значения имеющихся атрибутов (да хоть из shell-скриптов), во втором — создавать объекты. | ||
* Библиотека на довольно ранней стадии развития, это тоже вряд ли можно занести в плюсы. | * Библиотека на довольно ранней стадии развития, это тоже вряд ли можно занести в плюсы. |
Версия от 23: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.